diff --git a/src/checks/zcl_aoc_super.clas.abap b/src/checks/zcl_aoc_super.clas.abap index 478cbf81..5ce17aca 100644 --- a/src/checks/zcl_aoc_super.clas.abap +++ b/src/checks/zcl_aoc_super.clas.abap @@ -111,12 +111,16 @@ CLASS zcl_aoc_super DEFINITION METHODS set_uses_checksum IMPORTING !iv_enable TYPE abap_bool DEFAULT abap_true. - + METHODS is_active_version_by_sap + IMPORTING + iv_program_name TYPE progname + RETURNING + VALUE(rv_result) TYPE abap_bool. ENDCLASS. -CLASS ZCL_AOC_SUPER IMPLEMENTATION. +CLASS zcl_aoc_super IMPLEMENTATION. METHOD check. @@ -492,15 +496,9 @@ CLASS ZCL_AOC_SUPER IMPLEMENTATION. RETURN. " custom HR infotype includes ENDIF. - IF cl_enh_badi_def_utility=>is_sap_system( ) = abap_false. - SELECT SINGLE cnam FROM reposrc INTO lv_cnam - WHERE progname = p_sub_obj_name AND r3state = 'A'. - IF sy-subrc = 0 - AND ( lv_cnam = 'SAP' - OR lv_cnam = 'SAP*' - OR lv_cnam = 'DDIC' ). - RETURN. - ENDIF. + IF cl_enh_badi_def_utility=>is_sap_system( ) = abap_false + AND is_active_version_by_sap( p_sub_obj_name ) = abap_true. + RETURN. ENDIF. ENDIF. @@ -739,4 +737,29 @@ CLASS ZCL_AOC_SUPER IMPLEMENTATION. ENDIF. ENDMETHOD. + + METHOD is_active_version_by_sap. + DATA lv_author TYPE cnam. + + CALL FUNCTION 'ZAOC_GET_AUTHOR_OF_ACTIVE_VERS' + DESTINATION rfc_destination + EXPORTING + iv_program_name = iv_program_name + IMPORTING + ev_author = lv_author + EXCEPTIONS + no_active_version = 1 + OTHERS = 2. + + IF sy-subrc <> 0. + " Ignore for now + RETURN. + ENDIF. + + CASE lv_author. + WHEN 'SAP' OR 'SAP*' OR 'DDIC'. + rv_result = abap_true. + ENDCASE. + ENDMETHOD. + ENDCLASS. diff --git a/src/utils/zaoc_get_author_of_active_versrf.sush.xml b/src/utils/zaoc_get_author_of_active_versrf.sush.xml new file mode 100644 index 00000000..45c37567 --- /dev/null +++ b/src/utils/zaoc_get_author_of_active_versrf.sush.xml @@ -0,0 +1,36 @@ + + + + + + ZAOC_GET_AUTHOR_OF_ACTIVE_VERS + RF + ZAOC_GET_AUTHOR_OF_ACTIVE_VERS + Get author of active version + + + + ZAOC_GET_AUTHOR_OF_ACTIVE_VERS + RF + S_RFC + X + + + + + S_RFC + Authorization Check for RFC Access + AAAB + X + BC-MID-RFC + Check + Check + No + 3 + Okay + @08@ + + + + + diff --git a/src/utils/zaoc_wrapper.fugr.xml b/src/utils/zaoc_wrapper.fugr.xml index 0abfb5c5..2f6df480 100644 --- a/src/utils/zaoc_wrapper.fugr.xml +++ b/src/utils/zaoc_wrapper.fugr.xml @@ -8,6 +8,42 @@ SAPLZAOC_WRAPPER + + ZAOC_GET_AUTHOR_OF_ACTIVE_VERS + R + Get author of active version + + + IV_PROGRAM_NAME + PROGNAME + + + + + EV_AUTHOR + CNAM + + + + + NO_ACTIVE_VERSION + + + + + IV_PROGRAM_NAME + P + + + EV_AUTHOR + P + + + NO_ACTIVE_VERSION + X + + + ZAOC_IS_FUNCTION_MODULE_RFC R diff --git a/src/utils/zaoc_wrapper.fugr.zaoc_get_author_of_active_vers.abap b/src/utils/zaoc_wrapper.fugr.zaoc_get_author_of_active_vers.abap new file mode 100644 index 00000000..d847184d --- /dev/null +++ b/src/utils/zaoc_wrapper.fugr.zaoc_get_author_of_active_vers.abap @@ -0,0 +1,20 @@ +FUNCTION zaoc_get_author_of_active_vers. +*"---------------------------------------------------------------------- +*"*"Local Interface: +*" IMPORTING +*" VALUE(IV_PROGRAM_NAME) TYPE PROGNAME +*" EXPORTING +*" VALUE(EV_AUTHOR) TYPE CNAM +*" EXCEPTIONS +*" NO_ACTIVE_VERSION +*"---------------------------------------------------------------------- + SELECT SINGLE cnam + FROM reposrc + INTO ev_author + WHERE progname = iv_program_name + AND r3state = 'A'. + + IF sy-subrc <> 0. + RAISE no_active_version. + ENDIF. +ENDFUNCTION.