From 07340621a22b0625ece866faa014a1e7f6c2a5e1 Mon Sep 17 00:00:00 2001 From: sandraros <34005250+sandraros@users.noreply.github.com> Date: Sun, 6 Feb 2022 10:43:35 +0100 Subject: [PATCH] zdemo_excel29 demo file from Web Repository (#989) Fix #988 * zdemo_excel29 demo file from Web Repository * Delete TestMacro.xlsm * Remove comment about ZDEMO_EXCEL29/TestMacro.xlsm Co-authored-by: sandraros --- docs/FAQ.md | 5 - resources/TestMacro.xlsm | Bin 20605 -> 0 bytes src/demos/zdemo_excel29.prog.abap | 98 +++++++++++++++++-- src/demos/zdemo_excel29.prog.xml | 20 +++- src/demos/zdemo_excel29_input.w3mi.data.xlsm | Bin 0 -> 19183 bytes src/demos/zdemo_excel29_input.w3mi.xml | 29 ++++++ 6 files changed, 139 insertions(+), 13 deletions(-) delete mode 100644 resources/TestMacro.xlsm create mode 100644 src/demos/zdemo_excel29_input.w3mi.data.xlsm create mode 100644 src/demos/zdemo_excel29_input.w3mi.xml diff --git a/docs/FAQ.md b/docs/FAQ.md index 057b38e..539a3a0 100644 --- a/docs/FAQ.md +++ b/docs/FAQ.md @@ -22,11 +22,6 @@ Implement SAP OSS Notes: [Note 1385713 - SUBMIT: Allowing parameter of type STRING](https://service.sap.com/sap/support/notes/1385713) -* Macro-Enabled workbook - -Run report ZDEMO_EXCEL29 and use as VBA source file [TestMacro.xlsm](https://github.com/abap2xlsx/abap2xlsx/blob/master/resources/TestMacro.xlsm) attached. -Basically abap2xlsx works using an existing VBA binary (we do not want to create a VBA editor). - * Download XLSX files in Background Run report ZDEMO_EXCEL25. diff --git a/resources/TestMacro.xlsm b/resources/TestMacro.xlsm deleted file mode 100644 index 461bed82622a9bd36fc9565361cb81cdfba3b88e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20605 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 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. - 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' @@ -59,7 +76,12 @@ START-OF-SELECTION. 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 ). +* 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'. @@ -77,3 +99,65 @@ START-OF-SELECTION. 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 index 5bc8a56..70525a5 100644 --- a/src/demos/zdemo_excel29.prog.xml +++ b/src/demos/zdemo_excel29.prog.xml @@ -13,15 +13,33 @@ R - abap2xlsx Demo: Marco-Enabled workbook + 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_excel29_input.w3mi.data.xlsm b/src/demos/zdemo_excel29_input.w3mi.data.xlsm new file mode 100644 index 0000000000000000000000000000000000000000..f435f3bb4ffb171b21c95a201ad5a66dc750e341 GIT binary patch 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 + + + + +