diff --git a/src/zcl_excel_writer_2007.clas.locals_imp.abap b/src/zcl_excel_writer_2007.clas.locals_imp.abap index 0817d34..366a522 100644 --- a/src/zcl_excel_writer_2007.clas.locals_imp.abap +++ b/src/zcl_excel_writer_2007.clas.locals_imp.abap @@ -878,6 +878,7 @@ CLASS lcl_create_xl_sheet IMPLEMENTATION. lv_column_start TYPE zexcel_cell_column_alpha, lv_row_start TYPE zexcel_cell_row, lv_cell_coords TYPE zexcel_cell_coords, + lv_operator TYPE string, ls_expression TYPE zexcel_conditional_expression, ls_conditional_top10 TYPE zexcel_conditional_top10, ls_conditional_above_avg TYPE zexcel_conditional_above_avg, @@ -1163,20 +1164,12 @@ CLASS lcl_create_xl_sheet IMPLEMENTATION. CONDENSE lv_value. lo_element_2->set_attribute_ns( name = lc_xml_attr_dxfid value = lv_value ). - IF ls_textfunction-textfunction = zcl_excel_style_cond=>c_textfunction_notcontains. - lv_value = zcl_excel_style_cond=>c_operator_notcontains. - ELSE. - lv_value = ls_textfunction-textfunction. - ENDIF. - lo_element_2->set_attribute_ns( name = lc_xml_attr_operator - value = lv_value ). - " text lv_value = ls_textfunction-text. lo_element_2->set_attribute_ns( name = lc_xml_attr_text value = lv_value ). - " formula node + " operator & formula node zcl_excel_common=>convert_range2column_a_row( EXPORTING i_range = lo_style_cond->get_dimension_range( ) @@ -1186,17 +1179,25 @@ CLASS lcl_create_xl_sheet IMPLEMENTATION. lv_cell_coords = |{ lv_column_start }{ lv_row_start }|. CASE ls_textfunction-textfunction. WHEN zcl_excel_style_cond=>c_textfunction_beginswith. + lv_operator = zcl_excel_style_cond=>c_operator_beginswith. lv_value = |LEFT({ lv_cell_coords },LEN("{ escape( val = ls_textfunction-text format = cl_abap_format=>e_html_text ) }"))=| && |"{ escape( val = ls_textfunction-text format = cl_abap_format=>e_html_text ) }"|. WHEN zcl_excel_style_cond=>c_textfunction_containstext. + lv_operator = zcl_excel_style_cond=>c_operator_containstext. lv_value = |NOT(ISERROR(SEARCH("{ escape( val = ls_textfunction-text format = cl_abap_format=>e_html_text ) }",{ lv_cell_coords })))|. WHEN zcl_excel_style_cond=>c_textfunction_endswith. + lv_operator = zcl_excel_style_cond=>c_operator_endswith. lv_value = |RIGHT({ lv_cell_coords },LEN("{ escape( val = ls_textfunction-text format = cl_abap_format=>e_html_text ) }"))=| && |"{ escape( val = ls_textfunction-text format = cl_abap_format=>e_html_text ) }"|. WHEN zcl_excel_style_cond=>c_textfunction_notcontains. + lv_operator = zcl_excel_style_cond=>c_operator_notcontains. lv_value = |ISERROR(SEARCH("{ escape( val = ls_textfunction-text format = cl_abap_format=>e_html_text ) }",{ lv_cell_coords }))|. WHEN OTHERS. + lv_operator = ls_textfunction-textfunction. + CLEAR lv_value. ENDCASE. + lo_element_2->set_attribute_ns( name = lc_xml_attr_operator + value = lv_operator ). lo_element_3 = o_document->create_simple_element( name = lc_xml_node_formula parent = o_document ). lo_element_3->set_value( value = lv_value ).