From 49938b0c60a6c023bebccb71b9fb0a4bdc1659b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pascal=20M=C3=B6ller?= Date: Fri, 24 Dec 2021 16:21:42 +0100 Subject: [PATCH] Fix: after BIND_TABLE no columns in object (#731) * Fix: after BIND_TABLE no columns in object * fix 4 methods get_{rows|columns}[_iterator] Co-authored-by: Gregor Wolf Co-authored-by: sandraros <34005250+sandraros@users.noreply.github.com> Co-authored-by: Lars Hvam Co-authored-by: Abo Co-authored-by: John Doe Co-authored-by: sandraros --- src/zcl_excel_worksheet.clas.abap | 44 +++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/src/zcl_excel_worksheet.clas.abap b/src/zcl_excel_worksheet.clas.abap index fb5f19d..92305f1 100644 --- a/src/zcl_excel_worksheet.clas.abap +++ b/src/zcl_excel_worksheet.clas.abap @@ -2142,12 +2142,28 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. METHOD get_columns. + + DATA: columns TYPE TABLE OF i, + column TYPE i. + FIELD-SYMBOLS: + TYPE zexcel_s_cell_data. + + LOOP AT sheet_content ASSIGNING . + COLLECT -cell_column INTO columns. + ENDLOOP. + + LOOP AT columns INTO column. + " This will create the column instance if it doesn't exist + get_column( column ). + ENDLOOP. + eo_columns = me->columns. ENDMETHOD. "GET_COLUMNS METHOD get_columns_iterator. + get_columns( ). eo_iterator = me->columns->get_iterator( ). ENDMETHOD. "GET_COLUMNS_ITERATOR @@ -2494,12 +2510,40 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. METHOD get_rows. + + DATA: row TYPE i. + FIELD-SYMBOLS: TYPE zexcel_s_cell_data. + + IF sheet_content IS NOT INITIAL. + + row = 0. + DO. + " Find the next row + READ TABLE sheet_content ASSIGNING WITH KEY cell_row = row. + CASE sy-subrc. + WHEN 4. + " row doesn't exist, but it exists another row, SY-TABIX points to the first cell in this row. + READ TABLE sheet_content ASSIGNING INDEX sy-tabix. + ASSERT sy-subrc = 0. + row = -cell_row. + WHEN 8. + " it was the last available row + EXIT. + ENDCASE. + " This will create the row instance if it doesn't exist + get_row( row ). + row = row + 1. + ENDDO. + + ENDIF. + eo_rows = me->rows. ENDMETHOD. "GET_ROWS METHOD get_rows_iterator. + get_rows( ). eo_iterator = me->rows->get_iterator( ). ENDMETHOD. "GET_ROWS_ITERATOR