From 2f8b93f2a5869eee6e277a73a7971bbd72b1d2c6 Mon Sep 17 00:00:00 2001 From: Bilen Date: Tue, 20 Mar 2018 20:53:53 +0800 Subject: [PATCH] performance improvement for GET_ROW Iterator logic removed and hash table logic inserted to the GET_ROW method. --- src/zcl_excel_worksheet.clas.abap | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/src/zcl_excel_worksheet.clas.abap b/src/zcl_excel_worksheet.clas.abap index 8a57774..21b6173 100644 --- a/src/zcl_excel_worksheet.clas.abap +++ b/src/zcl_excel_worksheet.clas.abap @@ -4098,20 +4098,14 @@ method GET_RANGES_ITERATOR. METHOD get_row. - DATA: lo_row_iterator TYPE REF TO cl_object_collection_iterator, - lo_row TYPE REF TO zcl_excel_row. +* performance improvement for issue #527 + READ TABLE ROWS->DT_ROWS ASSIGNING FIELD-SYMBOL() WITH TABLE KEY ROW_INDEX = IP_ROW. + IF SY-SUBRC = 0. + EO_ROW = -ROW. + ENDIF. - lo_row_iterator = me->get_rows_iterator( ). - WHILE lo_row_iterator->has_next( ) = abap_true. - lo_row ?= lo_row_iterator->get_next( ). - IF lo_row->get_row_index( ) = ip_row. - eo_row = lo_row. - EXIT. - ENDIF. - ENDWHILE. - - IF eo_row IS NOT BOUND. - eo_row = me->add_new_row( ip_row ). + IF EO_ROW IS NOT BOUND. + EO_ROW = ME->ADD_NEW_ROW( IP_ROW ). ENDIF. ENDMETHOD.