SET_CELL_FORMULA sets formula in wrong cell (#961)

Co-authored-by: sandraros <sandra.rossi@gmail.com>
Co-authored-by: Abo <andrea@borgia.bo.it>
This commit is contained in:
sandraros 2022-02-19 16:29:33 +01:00 committed by GitHub
parent f2dd72e76e
commit 211cf550e6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 42 additions and 16 deletions

View File

@ -38,6 +38,14 @@ CLASS zcl_excel_common DEFINITION
VALUE(ep_column) TYPE zexcel_cell_column VALUE(ep_column) TYPE zexcel_cell_column
RAISING RAISING
zcx_excel . 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 CLASS-METHODS convert_columnrow2column_a_row
IMPORTING IMPORTING
!i_columnrow TYPE clike !i_columnrow TYPE clike
@ -489,6 +497,19 @@ CLASS zcl_excel_common IMPLEMENTATION.
ENDMETHOD. 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. METHOD convert_columnrow2column_a_row.
*--------------------------------------------------------------------* *--------------------------------------------------------------------*
"issue #256 - replacing char processing with regex "issue #256 - replacing char processing with regex

View File

@ -37,6 +37,7 @@ CLASS lcl_excel_common_test DEFINITION FOR TESTING
METHODS convert_column2int_maxcol FOR TESTING. METHODS convert_column2int_maxcol FOR TESTING.
METHODS convert_column2int_oob_empty FOR TESTING. METHODS convert_column2int_oob_empty FOR TESTING.
METHODS convert_column2int_oob_invalid 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 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_string1 FOR TESTING RAISING cx_static_check.
METHODS date_to_excel_string2 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. 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. METHOD convert_columnrow2column_a_row.
DATA: column TYPE zexcel_cell_column_alpha, DATA: column TYPE zexcel_cell_column_alpha,

View File

@ -3470,8 +3470,6 @@ CLASS zcl_excel_worksheet IMPLEMENTATION.
DATA: lv_column TYPE zexcel_cell_column, DATA: lv_column TYPE zexcel_cell_column,
ls_sheet_content TYPE zexcel_s_cell_data, ls_sheet_content TYPE zexcel_s_cell_data,
lv_row TYPE zexcel_cell_row, 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_value TYPE zexcel_cell_value,
lv_data_type TYPE zexcel_cell_data_type, lv_data_type TYPE zexcel_cell_data_type,
lv_value_type TYPE abap_typekind, 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-column_formula_id = ip_column_formula_id.
ls_sheet_content-cell_style = lv_style_guid. ls_sheet_content-cell_style = lv_style_guid.
ls_sheet_content-data_type = lv_data_type. ls_sheet_content-data_type = lv_data_type.
lv_row_alpha = lv_row. ls_sheet_content-cell_coords = zcl_excel_common=>convert_column_a_row2columnrow( i_column = lv_column i_row = 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
INSERT ls_sheet_content INTO TABLE sheet_content ASSIGNING <fs_sheet_content>. "ins #152 - Now <fs_sheet_content> always holds the data INSERT ls_sheet_content INTO TABLE sheet_content ASSIGNING <fs_sheet_content>. "ins #152 - Now <fs_sheet_content> always holds the data
ENDIF. 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 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_row = lv_row.
ls_sheet_content-cell_column = lv_column. 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 <sheet_content>. INSERT ls_sheet_content INTO TABLE me->sheet_content ASSIGNING <sheet_content>.
ENDIF. ENDIF.
@ -4204,17 +4200,9 @@ CLASS zcl_excel_worksheet IMPLEMENTATION.
ENDIF. ENDIF.
ENDLOOP. ENDLOOP.
lv_row_alpha = upper_cell-cell_row. upper_cell-cell_coords = zcl_excel_common=>convert_column_a_row2columnrow( i_column = upper_cell-cell_column i_row = 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.
lv_row_alpha = lower_cell-cell_row. lower_cell-cell_coords = zcl_excel_common=>convert_column_a_row2columnrow( i_column = lower_cell-cell_column i_row = 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. "UPDATE_DIMENSION_RANGE ENDMETHOD. "UPDATE_DIMENSION_RANGE