SUSC: delete in more direct way - no confirm popup #2036 (#2079)

* SUSC: delete in more direct way - no confirm popup

delete needs to be done with a code copy of FM SUSR_DELETE_OBJECT_CLASS
I really hate this but there is no other way

* SUSC: delete in more direct way - no confirm popup

* test

* test

* naming conventions

* PP
This commit is contained in:
Domi Bigl 2018-11-11 17:44:40 +01:00 committed by Lars Hvam
parent dc173ad906
commit 95287136d6

View File

@ -3,6 +3,24 @@ CLASS zcl_abapgit_object_susc DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
PUBLIC SECTION. PUBLIC SECTION.
INTERFACES zif_abapgit_object. INTERFACES zif_abapgit_object.
ALIASES mo_files FOR zif_abapgit_object~mo_files. ALIASES mo_files FOR zif_abapgit_object~mo_files.
PROTECTED SECTION.
CONSTANTS transobjecttype_class TYPE char1 VALUE 'C' ##NO_TEXT.
METHODS has_authorization
IMPORTING iv_object_type TYPE seu_objid
iv_class TYPE tobc-oclss
iv_activity TYPE activ_auth
RAISING zcx_abapgit_exception.
METHODS is_used
IMPORTING iv_auth_object_class TYPE tobc-oclss
RAISING zcx_abapgit_exception.
PRIVATE SECTION.
METHODS delete_class
IMPORTING iv_auth_object_class TYPE tobc-oclss.
METHODS put_delete_to_transport
IMPORTING iv_auth_object_class TYPE tobc-oclss
iv_object_type TYPE seu_objid
RAISING zcx_abapgit_exception.
ENDCLASS. ENDCLASS.
@ -73,7 +91,7 @@ CLASS zcl_abapgit_object_susc IMPLEMENTATION.
CALL FUNCTION 'SUSR_COMMEDITCHECK' CALL FUNCTION 'SUSR_COMMEDITCHECK'
EXPORTING EXPORTING
objectname = lv_objectname objectname = lv_objectname
transobjecttype = 'C'. transobjecttype = zcl_abapgit_object_susc=>transobjecttype_class.
INSERT tobc FROM ls_tobc. "#EC CI_SUBRC INSERT tobc FROM ls_tobc. "#EC CI_SUBRC
* ignore sy-subrc as all fields are key fields * ignore sy-subrc as all fields are key fields
@ -84,13 +102,109 @@ CLASS zcl_abapgit_object_susc IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~delete. METHOD zif_abapgit_object~delete.
CONSTANTS activity_delete_06 TYPE activ_auth VALUE '06'.
DATA: lv_objclass TYPE tobc-oclss. DATA: lv_auth_object_class TYPE tobc-oclss.
DATA: lv_object_type TYPE seu_objid.
DATA: lv_tr_object_name TYPE e071-obj_name.
DATA: lv_tr_return TYPE char1.
lv_objclass = ms_item-obj_name. lv_auth_object_class = ms_item-obj_name.
CALL FUNCTION 'SUSR_DELETE_OBJECT_CLASS' lv_object_type = ms_item-obj_type.
TRY.
me->zif_abapgit_object~exists( ).
CATCH zcx_abapgit_exception.
RETURN.
ENDTRY.
has_authorization( iv_object_type = lv_object_type
iv_class = lv_auth_object_class
iv_activity = activity_delete_06 ).
is_used( lv_auth_object_class ).
delete_class( lv_auth_object_class ).
put_delete_to_transport( iv_auth_object_class = lv_auth_object_class
iv_object_type = lv_object_type ).
ENDMETHOD.
METHOD put_delete_to_transport.
DATA: lv_tr_object_name TYPE e071-obj_name.
DATA: lv_tr_return TYPE char1.
DATA: Ls_package_info TYPE tdevc.
lv_tr_object_name = iv_auth_object_class.
CALL FUNCTION 'SUSR_COMMEDITCHECK'
EXPORTING EXPORTING
objclass = lv_objclass. objectname = lv_tr_object_name
transobjecttype = zcl_abapgit_object_susc=>transobjecttype_class
IMPORTING
return_from_korr = lv_tr_return.
IF lv_tr_return <> 'M'.
zcx_abapgit_exception=>raise( |error in SUSC delete at SUSR_COMMEDITCHECK| ).
ENDIF.
CALL FUNCTION 'TR_DEVCLASS_GET'
EXPORTING
iv_devclass = ms_item-devclass
IMPORTING
es_tdevc = ls_package_info
EXCEPTIONS
OTHERS = 1.
IF sy-subrc = 0 AND ls_package_info-korrflag IS INITIAL.
CALL FUNCTION 'TR_TADIR_INTERFACE'
EXPORTING
wi_delete_tadir_entry = abap_true
wi_test_modus = space
wi_tadir_pgmid = 'R3TR'
wi_tadir_object = iv_object_type
wi_tadir_obj_name = lv_tr_object_name
EXCEPTIONS
OTHERS = 0.
ENDIF.
ENDMETHOD.
METHOD delete_class.
DELETE FROM tobc WHERE oclss = iv_auth_object_class.
DELETE FROM tobct WHERE oclss = iv_auth_object_class.
ENDMETHOD.
METHOD is_used.
DATA: lv_used_auth_object_class TYPE tobc-oclss.
SELECT SINGLE oclss
FROM tobj
INTO lv_used_auth_object_class
WHERE oclss = iv_auth_object_class ##WARN_OK.
IF sy-subrc = 0.
zcx_abapgit_exception=>raise_t100( iv_msgid = '01'
iv_msgno = '212'
iv_msgv1 = |{ iv_auth_object_class }| ).
ENDIF.
ENDMETHOD.
METHOD has_authorization.
AUTHORITY-CHECK OBJECT 'S_DEVELOP'
ID 'DEVCLASS' DUMMY
ID 'OBJTYPE' FIELD iv_object_type
ID 'OBJNAME' FIELD iv_class
ID 'P_GROUP' DUMMY
ID 'ACTVT' FIELD iv_activity.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise_t100( iv_msgid = '01'
iv_msgno = '467' ).
ENDIF.
ENDMETHOD. ENDMETHOD.