mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +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.
|
PROTECTED SECTION.
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
TYPES: BEGIN OF ty_extension_index,
|
TYPES:
|
||||||
|
BEGIN OF ty_extension_index,
|
||||||
dd12v TYPE dd12v,
|
dd12v TYPE dd12v,
|
||||||
t_dd17v TYPE STANDARD TABLE OF dd17v
|
t_dd17v TYPE STANDARD TABLE OF dd17v
|
||||||
WITH NON-UNIQUE DEFAULT KEY,
|
WITH NON-UNIQUE DEFAULT KEY,
|
||||||
END OF ty_extension_index.
|
END OF ty_extension_index.
|
||||||
|
|
||||||
|
CONSTANTS:
|
||||||
|
c_objtype_extension_index TYPE trobjtype VALUE 'XINX'.
|
||||||
|
|
||||||
DATA:
|
DATA:
|
||||||
mv_name TYPE ddobjname,
|
mv_name TYPE ddobjname,
|
||||||
mv_id TYPE ddobjectid.
|
mv_id TYPE ddobjectid.
|
||||||
|
|
||||||
|
METHODS:
|
||||||
|
xinx_delete_docu
|
||||||
|
IMPORTING
|
||||||
|
iv_objname TYPE ddobjname
|
||||||
|
iv_id TYPE ddobjectid.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS ZCL_ABAPGIT_OBJECT_XINX IMPLEMENTATION.
|
CLASS zcl_abapgit_object_xinx IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD constructor.
|
METHOD constructor.
|
||||||
|
@ -56,24 +67,131 @@ CLASS ZCL_ABAPGIT_OBJECT_XINX IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD zif_abapgit_object~delete.
|
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
|
EXPORTING
|
||||||
objname = mv_name
|
i_trobjtype = lv_enqueue-objtype
|
||||||
indexname = mv_id
|
i_tabname = mv_name
|
||||||
extension = abap_true
|
i_indexname = mv_id
|
||||||
EXCEPTIONS
|
EXCEPTIONS
|
||||||
object_not_found = 1
|
not_executed = 1
|
||||||
object_not_specified = 2
|
error_occured = 2
|
||||||
permission_failure = 3
|
permission_failure = 3
|
||||||
action_cancelled = 4
|
OTHERS = 4.
|
||||||
OTHERS = 5.
|
|
||||||
|
|
||||||
IF sy-subrc <> 0.
|
IF sy-subrc <> 0.
|
||||||
zcx_abapgit_exception=>raise( |Error from RS_DD_INDX_DELETE { sy-subrc }| ).
|
zcx_abapgit_exception=>raise_t100( ).
|
||||||
ENDIF.
|
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.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
@ -236,4 +354,41 @@ CLASS ZCL_ABAPGIT_OBJECT_XINX IMPLEMENTATION.
|
||||||
ig_data = ls_extension_index ).
|
ig_data = ls_extension_index ).
|
||||||
|
|
||||||
ENDMETHOD.
|
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.
|
ENDCLASS.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user