From 647a006be4c81a8699d5d6db6794ca3ee17ca628 Mon Sep 17 00:00:00 2001 From: Bernd <135710507+darnoc312@users.noreply.github.com> Date: Thu, 23 May 2024 11:37:39 +0200 Subject: [PATCH] Update zcl_excel_autofilter.clas.abap --- src/zcl_excel_autofilter.clas.abap | 26 ++++++++------------------ 1 file changed, 8 insertions(+), 18 deletions(-) diff --git a/src/zcl_excel_autofilter.clas.abap b/src/zcl_excel_autofilter.clas.abap index a0ed31f..13bff99 100644 --- a/src/zcl_excel_autofilter.clas.abap +++ b/src/zcl_excel_autofilter.clas.abap @@ -19,7 +19,7 @@ CLASS zcl_excel_autofilter DEFINITION tr_textfilter2 TYPE RANGE OF string, END OF ts_filter . TYPES: - tt_filters TYPE HASHED TABLE OF ts_filter WITH UNIQUE KEY column . + tt_filters TYPE SORTED TABLE OF ts_filter WITH UNIQUE KEY column . DATA filter_area TYPE zexcel_s_autofilter_area . CONSTANTS mc_filter_rule_single_values TYPE tv_filter_rule VALUE 'single_values'. "#EC NOTEXT @@ -208,9 +208,6 @@ CLASS zcl_excel_autofilter IMPLEMENTATION. METHOD is_row_hidden. - DATA: lr_filter TYPE REF TO ts_filter, - lv_col TYPE i. - FIELD-SYMBOLS: TYPE ts_filter. rv_is_hidden = abap_false. @@ -219,29 +216,25 @@ CLASS zcl_excel_autofilter IMPLEMENTATION. * 1st row of filter area is never hidden, because here the filter * symbol is being shown *--------------------------------------------------------------------* - IF iv_row = me->filter_area-row_start. + IF iv_row <= me->filter_area-row_start OR + iv_row > me->filter_area-row_end. RETURN. ENDIF. - lv_col = me->filter_area-col_start. - - - WHILE lv_col <= me->filter_area-col_end. - - lr_filter = me->get_column_filter( lv_col ). - ASSIGN lr_filter->* TO . + LOOP AT mt_filters ASSIGNING WHERE column >= me->filter_area-col_start + AND column <= me->filter_area-col_end. CASE -rule. WHEN mc_filter_rule_single_values. rv_is_hidden = me->is_row_hidden_single_values( iv_row = iv_row - iv_col = lv_col + iv_col = -column is_filter = ). WHEN mc_filter_rule_text_pattern. rv_is_hidden = me->is_row_hidden_text_pattern( iv_row = iv_row - iv_col = lv_col + iv_col = -column is_filter = ). ENDCASE. @@ -250,10 +243,7 @@ CLASS zcl_excel_autofilter IMPLEMENTATION. RETURN. ENDIF. - - ADD 1 TO lv_col. - - ENDWHILE. + ENDLOOP. ENDMETHOD.