From 600ac8a1591796c01895c5506dedfb72764b8f1b Mon Sep 17 00:00:00 2001 From: StefanSchmoecker Date: Mon, 5 Jan 2015 13:46:41 +0100 Subject: [PATCH] Fixed issue #348: Referenced formulae truncated CLASS ZCL_EXCEL_COMMON : Extended length of internal field - now we'd really need huuuuuuuge formulae before we truncate ( was afraid to switch to string, no time to analyze if that is feasible ) CLASS ZCL_EXCEL_STYLE_COLOR: Added a method to allow creating rgb-colors with integer input instead of hex-input for the colors Report ZDEMO_EXCEL37: Added line to create output when using alternate writerclass ( was buggy after my extension of the report ), added code to save .xlsm templates as .xlsm when downloading, added set-get-parameter for better handling --- ZA2X/CLAS/ZCL_EXCEL_COMMON.slnk | 2 +- ZA2X/CLAS/ZCL_EXCEL_STYLE_COLOR.slnk | 38 +++++++++++++++++++++++++--- ZA2X/PROG/ZDEMO_EXCEL37.slnk | 15 ++++++++--- 3 files changed, 48 insertions(+), 7 deletions(-) diff --git a/ZA2X/CLAS/ZCL_EXCEL_COMMON.slnk b/ZA2X/CLAS/ZCL_EXCEL_COMMON.slnk index 34bbeaf..87447d7 100644 --- a/ZA2X/CLAS/ZCL_EXCEL_COMMON.slnk +++ b/ZA2X/CLAS/ZCL_EXCEL_COMMON.slnk @@ -2213,7 +2213,7 @@ endmethod. 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_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 diff --git a/ZA2X/CLAS/ZCL_EXCEL_STYLE_COLOR.slnk b/ZA2X/CLAS/ZCL_EXCEL_STYLE_COLOR.slnk index 341e829..cccd030 100644 --- a/ZA2X/CLAS/ZCL_EXCEL_STYLE_COLOR.slnk +++ b/ZA2X/CLAS/ZCL_EXCEL_STYLE_COLOR.slnk @@ -35,16 +35,48 @@ + + + + + + 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. - + METHOD create_new_argb. CONCATENATE zcl_excel_style_color=>c_alpha ip_red ip_green ip_blu INTO ep_color_argb. - endmethod. +ENDMETHOD. diff --git a/ZA2X/PROG/ZDEMO_EXCEL37.slnk b/ZA2X/PROG/ZDEMO_EXCEL37.slnk index 40de160..d146253 100644 --- a/ZA2X/PROG/ZDEMO_EXCEL37.slnk +++ b/ZA2X/PROG/ZDEMO_EXCEL37.slnk @@ -29,17 +29,17 @@ 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. - -CONSTANTS: gc_save_file_name TYPE string VALUE '37- Read template and output.xlsx'. +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 DEFAULT 'c:\temp\whatever.xlsx' LOWER CASE. +PARAMETERS: p_upfile TYPE string LOWER CASE MEMORY ID gr8. SELECTION-SCREEN END OF BLOCK blx. INCLUDE zdemo_excel_outputopt_incl. @@ -60,6 +60,12 @@ 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. @@ -275,6 +281,7 @@ FORM read_template RAISING zcx_excel . WHEN OTHERS. CREATE OBJECT reader TYPE (lb_read). + excel = reader->load_file( p_upfile ). "Use template for charts excel->use_template = abap_true. @@ -296,9 +303,11 @@ FORM write_template RAISING zcx_excel. 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' ).