From 13da36b7a21b9864a6cdc2b221f3a55e09ee7f43 Mon Sep 17 00:00:00 2001 From: sandraros <34005250+sandraros@users.noreply.github.com> Date: Sat, 8 Feb 2025 10:02:22 +0100 Subject: [PATCH] Dump ITAB_DUPLICATE in reader=>load_shared_strings (#1288) Fix #1287 --- src/zcl_excel_reader_2007.clas.abap | 40 +++++++++++++++++------------ 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/src/zcl_excel_reader_2007.clas.abap b/src/zcl_excel_reader_2007.clas.abap index 53fc484..076c885 100644 --- a/src/zcl_excel_reader_2007.clas.abap +++ b/src/zcl_excel_reader_2007.clas.abap @@ -999,25 +999,31 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION. *--------------------------------------------------------------------* CLEAR: lv_current_offset. WHILE lo_node_si_child IS BOUND. " actually these children of are -tags - CLEAR: ls_rtf. + lv_tag_name = lo_node_si_child->get_name( ). + IF lv_tag_name = 'r'. - " extracting rich text formating data - lo_node_r_child_rpr ?= lo_node_si_child->find_from_name_ns( name = 'rPr' uri = namespace-main ). - IF lo_node_r_child_rpr IS BOUND. - lo_font = load_style_font( lo_node_r_child_rpr ). - ls_rtf-font = lo_font->get_structure( ). - ENDIF. - ls_rtf-offset = lv_current_offset. - " extract the ... part of each -tag - lo_node_r_child_t ?= lo_node_si_child->find_from_name_ns( name = 't' uri = namespace-main ). - IF lo_node_r_child_t IS BOUND. - lv_node_value = unescape_string_value( lo_node_r_child_t->get_value( ) ). - CONCATENATE -value lv_node_value INTO -value RESPECTING BLANKS. - ls_rtf-length = strlen( lv_node_value ). - ENDIF. + CLEAR: ls_rtf. - lv_current_offset = strlen( -value ). - APPEND ls_rtf TO -rtf. + " extracting rich text formating data + lo_node_r_child_rpr ?= lo_node_si_child->find_from_name_ns( name = 'rPr' uri = namespace-main ). + IF lo_node_r_child_rpr IS BOUND. + lo_font = load_style_font( lo_node_r_child_rpr ). + ls_rtf-font = lo_font->get_structure( ). + ENDIF. + ls_rtf-offset = lv_current_offset. + " extract the ... part of each -tag + lo_node_r_child_t ?= lo_node_si_child->find_from_name_ns( name = 't' uri = namespace-main ). + IF lo_node_r_child_t IS BOUND. + lv_node_value = unescape_string_value( lo_node_r_child_t->get_value( ) ). + CONCATENATE -value lv_node_value INTO -value RESPECTING BLANKS. + ls_rtf-length = strlen( lv_node_value ). + + IF ls_rtf-length > 0. + lv_current_offset = strlen( -value ). + APPEND ls_rtf TO -rtf. + ENDIF. + ENDIF. + ENDIF. lo_node_si_child ?= lo_node_si_child->get_next( ).