From 188bf8d69a29e6cbce6c4182267ff8cebd351e08 Mon Sep 17 00:00:00 2001 From: Mike Pokraka Date: Mon, 17 Feb 2025 10:52:23 +0000 Subject: [PATCH] Filter nonexistent FMs from inconsistent FUGR (#7147) Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com> --- src/objects/zcl_abapgit_object_fugr.clas.abap | 29 ++++++++++++++++--- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/src/objects/zcl_abapgit_object_fugr.clas.abap b/src/objects/zcl_abapgit_object_fugr.clas.abap index 41b53c503..34ea71d58 100644 --- a/src/objects/zcl_abapgit_object_fugr.clas.abap +++ b/src/objects/zcl_abapgit_object_fugr.clas.abap @@ -516,12 +516,15 @@ CLASS zcl_abapgit_object_fugr IMPLEMENTATION. METHOD functions. - DATA: lv_area TYPE rs38l-area. - FIELD-SYMBOLS: TYPE LINE OF ty_rs38l_incl_tt. + DATA: lv_area TYPE rs38l-area, + lt_enlfdir TYPE STANDARD TABLE OF enlfdir. + DATA lv_index TYPE i. + + FIELD-SYMBOLS: TYPE LINE OF ty_rs38l_incl_tt, + TYPE enlfdir. lv_area = ms_item-obj_name. - CALL FUNCTION 'RS_FUNCTION_POOL_CONTENTS' EXPORTING function_pool = lv_area @@ -534,9 +537,27 @@ CLASS zcl_abapgit_object_fugr IMPLEMENTATION. zcx_abapgit_exception=>raise_t100( ). ENDIF. -* The result can also contain function which are lowercase. + "FM is not reliable if Function Group is inconsistent, so cross-check results (#7147) + SELECT * FROM enlfdir + INTO TABLE lt_enlfdir + WHERE area = ms_item-obj_name + AND active = abap_true + ORDER BY funcname. "#EC CI_SUBRC + + LOOP AT lt_enlfdir ASSIGNING . + TRANSLATE -funcname TO UPPER CASE. + ENDLOOP. + + SORT lt_enlfdir BY funcname ASCENDING. + + "Remove anything not in FM attributes table LOOP AT rt_functab ASSIGNING . TRANSLATE TO UPPER CASE. + lv_index = sy-tabix. + READ TABLE lt_enlfdir WITH KEY funcname = -funcname TRANSPORTING NO FIELDS. + IF sy-subrc <> 0. + DELETE rt_functab INDEX lv_index. + ENDIF. ENDLOOP. SORT rt_functab BY funcname ASCENDING.