From 57879a87ed2397b2b1f82d174f2d36c323fb0c66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=BCnter?= Date: Fri, 5 Nov 2021 05:30:17 +0100 Subject: [PATCH] Patch: improve performance - new secondary keys (#5102) * Patch: improve performance - new secondary keys * cleanup Co-authored-by: Lars Hvam --- src/utils/zcl_abapgit_diff.clas.abap | 29 +++++++-------------------- src/zif_abapgit_definitions.intf.abap | 5 ++++- 2 files changed, 11 insertions(+), 23 deletions(-) diff --git a/src/utils/zcl_abapgit_diff.clas.abap b/src/utils/zcl_abapgit_diff.clas.abap index 530aac6bb..9e49fe514 100644 --- a/src/utils/zcl_abapgit_diff.clas.abap +++ b/src/utils/zcl_abapgit_diff.clas.abap @@ -309,6 +309,7 @@ CLASS zcl_abapgit_diff IMPLEMENTATION. FIELD-SYMBOLS: TYPE zif_abapgit_definitions=>ty_diff. LOOP AT mt_diff ASSIGNING + USING KEY new_num WHERE old = is_diff_old-old AND new = is_diff_old-new AND new_num = is_diff_old-new_num @@ -324,19 +325,11 @@ CLASS zcl_abapgit_diff IMPLEMENTATION. METHOD set_patch_new. - DATA: lv_new_num TYPE i. FIELD-SYMBOLS: TYPE zif_abapgit_definitions=>ty_diff. - LOOP AT mt_diff ASSIGNING . - - lv_new_num = -new_num. - - IF lv_new_num = iv_line_new. - EXIT. - ENDIF. - - ENDLOOP. - + READ TABLE mt_diff WITH TABLE KEY new_num + COMPONENTS new_num = iv_line_new + ASSIGNING . IF sy-subrc <> 0. zcx_abapgit_exception=>raise( |Invalid new line number { iv_line_new }| ). ENDIF. @@ -348,19 +341,11 @@ CLASS zcl_abapgit_diff IMPLEMENTATION. METHOD set_patch_old. - DATA: lv_old_num TYPE i. FIELD-SYMBOLS: TYPE zif_abapgit_definitions=>ty_diff. - LOOP AT mt_diff ASSIGNING . - - lv_old_num = -old_num. - - IF lv_old_num = iv_line_old. - EXIT. - ENDIF. - - ENDLOOP. - + READ TABLE mt_diff WITH TABLE KEY old_num + COMPONENTS old_num = iv_line_old + ASSIGNING . IF sy-subrc <> 0. zcx_abapgit_exception=>raise( |Invalid old line number { iv_line_old }| ). ENDIF. diff --git a/src/zif_abapgit_definitions.intf.abap b/src/zif_abapgit_definitions.intf.abap index b1976f0c2..63a40838f 100644 --- a/src/zif_abapgit_definitions.intf.abap +++ b/src/zif_abapgit_definitions.intf.abap @@ -269,7 +269,10 @@ INTERFACE zif_abapgit_definitions beacon TYPE i, END OF ty_diff . TYPES: - ty_diffs_tt TYPE STANDARD TABLE OF ty_diff WITH DEFAULT KEY . + ty_diffs_tt TYPE STANDARD TABLE OF ty_diff + WITH DEFAULT KEY + WITH NON-UNIQUE SORTED KEY new_num COMPONENTS new_num + WITH NON-UNIQUE SORTED KEY old_num COMPONENTS old_num. TYPES: BEGIN OF ty_count, insert TYPE i,