From 16fe500579bcdbb241b46fb4af378b141bb0fa44 Mon Sep 17 00:00:00 2001 From: larshp Date: Fri, 25 Nov 2016 15:16:14 +0100 Subject: [PATCH] CLAS: better changed_by but still not perfect --- src/zabapgit.prog.abap | 2 +- src/zabapgit_object_clas.prog.abap | 73 +++++++++++++++++++++--- src/zabapgit_object_tabl_valid.prog.abap | 6 +- src/zabapgit_unit_test.prog.abap | 2 +- 4 files changed, 69 insertions(+), 14 deletions(-) diff --git a/src/zabapgit.prog.abap b/src/zabapgit.prog.abap index 667b1acb9..9c7ff8684 100644 --- a/src/zabapgit.prog.abap +++ b/src/zabapgit.prog.abap @@ -3,7 +3,7 @@ REPORT zabapgit LINE-SIZE 100. * See http://www.abapgit.org CONSTANTS: gc_xml_version TYPE string VALUE 'v1.0.0', "#EC NOTEXT - gc_abap_version TYPE string VALUE 'v1.23.4'. "#EC NOTEXT + gc_abap_version TYPE string VALUE 'v1.23.5'. "#EC NOTEXT ******************************************************************************** * The MIT License (MIT) diff --git a/src/zabapgit_object_clas.prog.abap b/src/zabapgit_object_clas.prog.abap index 755b52a00..a978ed0e2 100644 --- a/src/zabapgit_object_clas.prog.abap +++ b/src/zabapgit_object_clas.prog.abap @@ -102,6 +102,9 @@ CLASS lcl_object_clas DEFINITION INHERITING FROM lcl_objects_program. METHODS reduce CHANGING ct_source TYPE ty_string_tt. + METHODS get_all_class_includes + RETURNING VALUE(rt_includes) TYPE seoincl_t. + ENDCLASS. "lcl_object_dtel DEFINITION *----------------------------------------------------------------------* @@ -121,6 +124,37 @@ ENDCLASS. "lcl_object_intf DEFINITION *----------------------------------------------------------------------* CLASS lcl_object_clas IMPLEMENTATION. + METHOD get_all_class_includes. +* note: includes returned might not exist +* method cl_oo_classname_service=>GET_ALL_CLASS_INCLUDES does not exist in 702 + + DATA: lv_clsname TYPE seoclsname, + lt_methods TYPE seop_methods_w_include. + + FIELD-SYMBOLS: LIKE LINE OF lt_methods. + + + lv_clsname = ms_item-obj_name. + + APPEND cl_oo_classname_service=>get_ccdef_name( lv_clsname ) TO rt_includes. + APPEND cl_oo_classname_service=>get_ccmac_name( lv_clsname ) TO rt_includes. + APPEND cl_oo_classname_service=>get_ccimp_name( lv_clsname ) TO rt_includes. + APPEND cl_oo_classname_service=>get_cl_name( lv_clsname ) TO rt_includes. + APPEND cl_oo_classname_service=>get_ccau_name( lv_clsname ) TO rt_includes. + APPEND cl_oo_classname_service=>get_pubsec_name( lv_clsname ) TO rt_includes. + APPEND cl_oo_classname_service=>get_prosec_name( lv_clsname ) TO rt_includes. + APPEND cl_oo_classname_service=>get_prisec_name( lv_clsname ) TO rt_includes. + APPEND cl_oo_classname_service=>get_classpool_name( lv_clsname ) TO rt_includes. + APPEND cl_oo_classname_service=>get_ct_name( lv_clsname ) TO rt_includes. + APPEND cl_oo_classname_service=>get_cs_name( lv_clsname ) TO rt_includes. + + lt_methods = cl_oo_classname_service=>get_all_method_includes( lv_clsname ). + LOOP AT lt_methods ASSIGNING . + APPEND -incname TO rt_includes. + ENDLOOP. + + ENDMETHOD. + METHOD lif_object~has_changed_since. DATA: lv_clsname TYPE seoclsname, @@ -169,18 +203,39 @@ CLASS lcl_object_clas IMPLEMENTATION. ENDMETHOD. "lif_object~get_metadata METHOD lif_object~changed_by. -* todo, not sure this is correct, to be tested - SELECT SINGLE changedby FROM seoclassdf INTO rv_user - WHERE clsname = ms_item-obj_name - AND version = '1'. "#EC CI_GENBUFF - IF sy-subrc = 0 AND rv_user IS INITIAL. - SELECT SINGLE author FROM seoclassdf INTO rv_user - WHERE clsname = ms_item-obj_name - AND version = '1'. "#EC CI_GENBUFF - ENDIF. + + TYPES: BEGIN OF ty_includes, + programm TYPE programm, + END OF ty_includes. + + TYPES: BEGIN OF ty_reposrc, + unam TYPE reposrc-unam, + udat TYPE reposrc-udat, + utime TYPE reposrc-utime, + END OF ty_reposrc. + + DATA: lt_reposrc TYPE STANDARD TABLE OF ty_reposrc, + ls_reposrc LIKE LINE OF lt_reposrc, + lt_includes TYPE STANDARD TABLE OF ty_includes. + + + lt_includes = get_all_class_includes( ). + ASSERT lines( lt_includes ) > 0. + + SELECT unam udat utime FROM reposrc + INTO TABLE lt_reposrc + FOR ALL ENTRIES IN lt_includes + WHERE progname = lt_includes-programm + AND r3state = 'A'. IF sy-subrc <> 0. rv_user = c_user_unknown. + ELSE. + SORT lt_reposrc BY udat DESCENDING utime DESCENDING. + READ TABLE lt_reposrc INDEX 1 INTO ls_reposrc. + ASSERT sy-subrc = 0. + rv_user = ls_reposrc-unam. ENDIF. + ENDMETHOD. METHOD lif_object~exists. diff --git a/src/zabapgit_object_tabl_valid.prog.abap b/src/zabapgit_object_tabl_valid.prog.abap index 59576cf1b..58d0aa20a 100644 --- a/src/zabapgit_object_tabl_valid.prog.abap +++ b/src/zabapgit_object_tabl_valid.prog.abap @@ -2,7 +2,7 @@ *& Include zabapgit_object_tabl_valid *&---------------------------------------------------------------------* -CLASS lcl_object_tabl_validation DEFINITION. +CLASS lcl_object_tabl_validation DEFINITION FINAL. PUBLIC SECTION. METHODS validate IMPORTING @@ -14,7 +14,7 @@ CLASS lcl_object_tabl_validation DEFINITION. lcx_exception. ENDCLASS. -CLASS lcl_tabl_validation_dialog DEFINITION. +CLASS lcl_tabl_validation_dialog DEFINITION FINAL. PUBLIC SECTION. METHODS: constructor @@ -91,7 +91,7 @@ CLASS lcl_tabl_validation_dialog IMPLEMENTATION. ENDCLASS. -CLASS lct_table_validation DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT. +CLASS lct_table_validation DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FINAL. PRIVATE SECTION. METHODS: setup, diff --git a/src/zabapgit_unit_test.prog.abap b/src/zabapgit_unit_test.prog.abap index 8181da660..2dabe4cd0 100644 --- a/src/zabapgit_unit_test.prog.abap +++ b/src/zabapgit_unit_test.prog.abap @@ -81,7 +81,7 @@ CLASS ltcl_convert IMPLEMENTATION. ENDCLASS. "ltcl_convert IMPLEMENTATION -CLASS lth_critical_tests DEFINITION . +CLASS lth_critical_tests DEFINITION FINAL. PUBLIC SECTION. CLASS-METHODS: check_run_permission.