diff --git a/src/zcl_excel_common.clas.abap b/src/zcl_excel_common.clas.abap index ab317bf..17263df 100644 --- a/src/zcl_excel_common.clas.abap +++ b/src/zcl_excel_common.clas.abap @@ -846,7 +846,7 @@ CLASS zcl_excel_common IMPLEMENTATION. lv_value = ip_value. - FIND REGEX `\s|'` IN lv_value. " \s finds regular and white spaces + 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 . diff --git a/src/zcl_excel_common.clas.testclasses.abap b/src/zcl_excel_common.clas.testclasses.abap index e4b0987..f6a53af 100644 --- a/src/zcl_excel_common.clas.testclasses.abap +++ b/src/zcl_excel_common.clas.testclasses.abap @@ -122,6 +122,12 @@ CLASS lcl_excel_common_test DEFINITION FOR TESTING METHODS is_cell_in_range_upperside_out FOR TESTING. METHODS is_cell_in_range_rightside_out FOR TESTING. METHODS is_cell_in_range_lowerside_out FOR TESTING. + METHODS escape_string_whitespace1 FOR TESTING. + METHODS escape_string_whitespace2 FOR TESTING. + METHODS escape_string_whitespace3 FOR TESTING. + METHODS escape_string_quote FOR TESTING. + METHODS escape_string_hyphen FOR TESTING. + METHODS escape_string_regular FOR TESTING. ENDCLASS. @@ -1597,4 +1603,88 @@ CLASS lcl_excel_common_test IMPLEMENTATION. ENDTRY. ENDMETHOD. "is_cell_in_range_lowerside_out. + METHOD escape_string_hyphen. + DATA: name TYPE string, + escaped_name TYPE string. + + name = `A-B`. + + escaped_name = zcl_excel_common=>escape_string( name ). + + cl_abap_unit_assert=>assert_equals( act = escaped_name + exp = `'A-B'` + msg = 'Escaping - failed' ). + + ENDMETHOD. + + METHOD escape_string_quote. + DATA: name TYPE string, + escaped_name TYPE string. + + name = `A'B`. + + escaped_name = zcl_excel_common=>escape_string( name ). + + cl_abap_unit_assert=>assert_equals( act = escaped_name + exp = `'A''B'` + msg = `Escaping ' failed` ). + + ENDMETHOD. + + METHOD escape_string_regular. + DATA: name TYPE string, + escaped_name TYPE string. + + name = `Ab1`. + + escaped_name = zcl_excel_common=>escape_string( name ). + + cl_abap_unit_assert=>assert_equals( act = escaped_name + exp = `Ab1` + msg = 'Escaped for no reason' ). + + ENDMETHOD. + + METHOD escape_string_whitespace1. + DATA: name TYPE string, + escaped_name TYPE string. + + name = `A B`. + + escaped_name = zcl_excel_common=>escape_string( name ). + + cl_abap_unit_assert=>assert_equals( act = escaped_name + exp = `'A B'` + msg = `Escaping ' ' (space) failed` ). + + ENDMETHOD. + + METHOD escape_string_whitespace2. + DATA: name TYPE string, + escaped_name TYPE string. + + name = `A` && cl_abap_char_utilities=>horizontal_tab && `B`. + + escaped_name = zcl_excel_common=>escape_string( name ). + + cl_abap_unit_assert=>assert_equals( act = escaped_name + exp = `'A` && cl_abap_char_utilities=>horizontal_tab && `B'` + msg = `Escaping TAB failed` ). + + ENDMETHOD. + + METHOD escape_string_whitespace3. + DATA: name TYPE string, + escaped_name TYPE string. + + name = `A` && cl_abap_char_utilities=>newline && `B`. + + escaped_name = zcl_excel_common=>escape_string( name ). + + cl_abap_unit_assert=>assert_equals( act = escaped_name + exp = `'A` && cl_abap_char_utilities=>newline && `B'` + msg = `Escaping LF failed` ). + + ENDMETHOD. + ENDCLASS.