mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 04:08:27 +08:00
XINX delete: remove UI call
This commit is contained in:
parent
94604a7db5
commit
4799230514
|
@ -11,20 +11,31 @@ CLASS zcl_abapgit_object_xinx DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
|
|||
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
TYPES: BEGIN OF ty_extension_index,
|
||||
dd12v TYPE dd12v,
|
||||
t_dd17v TYPE STANDARD TABLE OF dd17v
|
||||
WITH NON-UNIQUE DEFAULT KEY,
|
||||
END OF ty_extension_index.
|
||||
TYPES:
|
||||
BEGIN OF ty_extension_index,
|
||||
dd12v TYPE dd12v,
|
||||
t_dd17v TYPE STANDARD TABLE OF dd17v
|
||||
WITH NON-UNIQUE DEFAULT KEY,
|
||||
END OF ty_extension_index.
|
||||
|
||||
CONSTANTS:
|
||||
c_objtype_extension_index TYPE trobjtype VALUE 'XINX'.
|
||||
|
||||
DATA:
|
||||
mv_name TYPE ddobjname,
|
||||
mv_id TYPE ddobjectid.
|
||||
|
||||
METHODS:
|
||||
xinx_delete_docu
|
||||
IMPORTING
|
||||
iv_objname TYPE ddobjname
|
||||
iv_id TYPE ddobjectid.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS ZCL_ABAPGIT_OBJECT_XINX IMPLEMENTATION.
|
||||
CLASS zcl_abapgit_object_xinx IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD constructor.
|
||||
|
@ -56,24 +67,131 @@ CLASS ZCL_ABAPGIT_OBJECT_XINX IMPLEMENTATION.
|
|||
|
||||
METHOD zif_abapgit_object~delete.
|
||||
|
||||
" RS_DD_INDX_DELETE calls the GUI. Someday we need a better solution
|
||||
" Reimplement FM RS_DD_INDX_DELETE as it calls the UI
|
||||
|
||||
CALL FUNCTION 'RS_DD_INDX_DELETE'
|
||||
DATA: lv_enqueue TYPE ddenqs,
|
||||
lv_protname TYPE tstrf01-file,
|
||||
lv_del_concname LIKE lv_enqueue-objname,
|
||||
lv_concname TYPE rsdxx-objname,
|
||||
lv_transp_key TYPE trkey,
|
||||
ls_e071 TYPE e071,
|
||||
lv_clm_corrnum TYPE e070-trkorr,
|
||||
lv_message TYPE string.
|
||||
|
||||
CONCATENATE mv_name '-' mv_id INTO lv_concname.
|
||||
lv_enqueue-objtype = c_objtype_extension_index.
|
||||
|
||||
CALL FUNCTION 'INT_INDX_DEL_LOCK'
|
||||
EXPORTING
|
||||
objname = mv_name
|
||||
indexname = mv_id
|
||||
extension = abap_true
|
||||
i_trobjtype = lv_enqueue-objtype
|
||||
i_tabname = mv_name
|
||||
i_indexname = mv_id
|
||||
EXCEPTIONS
|
||||
object_not_found = 1
|
||||
object_not_specified = 2
|
||||
permission_failure = 3
|
||||
action_cancelled = 4
|
||||
OTHERS = 5.
|
||||
not_executed = 1
|
||||
error_occured = 2
|
||||
permission_failure = 3
|
||||
OTHERS = 4.
|
||||
|
||||
IF sy-subrc <> 0.
|
||||
zcx_abapgit_exception=>raise( |Error from RS_DD_INDX_DELETE { sy-subrc }| ).
|
||||
zcx_abapgit_exception=>raise_t100( ).
|
||||
ENDIF.
|
||||
|
||||
lv_enqueue-objname = mv_name.
|
||||
lv_enqueue-secname = mv_id.
|
||||
CALL FUNCTION 'RS_CORR_INSERT'
|
||||
EXPORTING
|
||||
object = lv_enqueue
|
||||
object_class = 'DICT'
|
||||
mode = 'DELETE'
|
||||
IMPORTING
|
||||
transport_key = lv_transp_key
|
||||
EXCEPTIONS
|
||||
OTHERS = 1.
|
||||
|
||||
IF sy-subrc <> 0.
|
||||
" & was not deleted (correction entry not possible or canceled)
|
||||
MESSAGE s015(e2) WITH lv_concname INTO lv_message.
|
||||
zcx_abapgit_exception=>raise_t100( ).
|
||||
ENDIF.
|
||||
|
||||
CALL FUNCTION 'DD_LOGNPROT_NAME_GET'
|
||||
EXPORTING
|
||||
task = 'DEL'
|
||||
obj_type = lv_enqueue-objtype
|
||||
obj_name = lv_enqueue-objname
|
||||
ind_name = lv_enqueue-secname
|
||||
IMPORTING
|
||||
protname = lv_protname
|
||||
EXCEPTIONS
|
||||
input_error = 0.
|
||||
|
||||
PERFORM logdelete IN PROGRAM rddu0001 USING lv_protname.
|
||||
|
||||
lv_del_concname = lv_enqueue-objname.
|
||||
lv_del_concname+16 = lv_enqueue-secname.
|
||||
CALL FUNCTION 'DD_OBJ_DEL'
|
||||
EXPORTING
|
||||
object_name = lv_del_concname
|
||||
object_type = lv_enqueue-objtype
|
||||
del_state = 'M'
|
||||
EXCEPTIONS
|
||||
OTHERS = 1.
|
||||
|
||||
IF sy-subrc <> 0.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
CALL FUNCTION 'DD_DD_TO_E071'
|
||||
EXPORTING
|
||||
type = lv_enqueue-objtype
|
||||
name = lv_enqueue-objname
|
||||
id = lv_enqueue-secname
|
||||
IMPORTING
|
||||
obj_name = ls_e071-obj_name
|
||||
EXCEPTIONS
|
||||
illegal_input = 1
|
||||
OTHERS = 2.
|
||||
|
||||
IF sy-subrc <> 0.
|
||||
" Internal error & in & (contact person in charge)
|
||||
MESSAGE i008(e2) WITH 'DD_DD_TO_E071' 'RS_DD_INDX_DELETE' INTO lv_message.
|
||||
zcx_abapgit_exception=>raise_t100( ).
|
||||
ENDIF.
|
||||
|
||||
ls_e071-object = lv_enqueue-objtype.
|
||||
CALL FUNCTION 'RS_DELETE_FROM_WORKING_AREA'
|
||||
EXPORTING
|
||||
object = ls_e071-object
|
||||
obj_name = ls_e071-obj_name
|
||||
immediate = 'X'
|
||||
actualize_working_area = 'X'.
|
||||
|
||||
xinx_delete_docu(
|
||||
iv_objname = mv_name
|
||||
iv_id = mv_id ).
|
||||
|
||||
CALL FUNCTION 'RS_TREE_OBJECT_PLACEMENT'
|
||||
EXPORTING
|
||||
object = ls_e071-obj_name
|
||||
operation = 'DELETE'
|
||||
type = c_objtype_extension_index.
|
||||
|
||||
IF mv_id(1) CA 'YZ'.
|
||||
CALL FUNCTION 'CLM_INDX_MODIFICATION_DELETE'
|
||||
EXPORTING
|
||||
idxobj_name = lv_enqueue-objname
|
||||
idx_type = lv_enqueue-objtype
|
||||
idx_name = mv_id
|
||||
transport_key = lv_transp_key
|
||||
corrnum = lv_clm_corrnum.
|
||||
ENDIF.
|
||||
|
||||
CALL FUNCTION 'RS_DD_DEQUEUE'
|
||||
EXPORTING
|
||||
objtype = lv_enqueue-objtype
|
||||
objname = lv_enqueue-objname
|
||||
secname = lv_enqueue-secname.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
@ -236,4 +354,41 @@ CLASS ZCL_ABAPGIT_OBJECT_XINX IMPLEMENTATION.
|
|||
ig_data = ls_extension_index ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD xinx_delete_docu.
|
||||
|
||||
DATA: lv_docuid TYPE dokhl-id,
|
||||
lv_doctype TYPE dokhl-typ,
|
||||
lv_docname TYPE dokhl-object.
|
||||
|
||||
lv_docname = iv_objname.
|
||||
lv_docname+30 = iv_id.
|
||||
CALL FUNCTION 'INTERN_DD_DOCU_ID_MATCH'
|
||||
EXPORTING
|
||||
p_trobjtype = c_objtype_extension_index
|
||||
IMPORTING
|
||||
p_docu_id = lv_docuid
|
||||
p_doctype = lv_doctype
|
||||
EXCEPTIONS
|
||||
illegal_type = 1
|
||||
OTHERS = 2.
|
||||
|
||||
IF sy-subrc <> 0.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
CALL FUNCTION 'DOKU_DELETE_ALL'
|
||||
EXPORTING
|
||||
doku_id = lv_docuid
|
||||
doku_object = lv_docname
|
||||
doku_typ = lv_doctype
|
||||
suppress_authority = 'X'
|
||||
suppress_enqueue = 'X'
|
||||
suppress_transport = 'X'
|
||||
EXCEPTIONS
|
||||
no_docu_found = 1
|
||||
OTHERS = 2.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
Loading…
Reference in New Issue
Block a user