Fix TADIR handling #2066 (#2078)

* AUTH + FORM: delete tadir

* SFBS + SFBF: delete tadir

* SFSW: synchronous deletion
This commit is contained in:
Christian Günter 2018-11-10 08:11:22 +01:00 committed by Lars Hvam
parent 7f312f8634
commit 36fccd3b52
5 changed files with 51 additions and 7 deletions

View File

@ -121,6 +121,7 @@ CLASS zcl_abapgit_object_auth IMPLEMENTATION.
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ).
rs_metadata-delete_tadir = abap_true.
ENDMETHOD.

View File

@ -289,6 +289,7 @@ CLASS zcl_abapgit_object_form IMPLEMENTATION.
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ).
rs_metadata-delete_tadir = abap_true.
ENDMETHOD.

View File

@ -134,6 +134,8 @@ CLASS zcl_abapgit_object_sfbf IMPLEMENTATION.
lo_bf->set_parent_bfs( lt_parent_bfs ).
set_default_package( iv_package ).
tadir_insert( iv_package ).
lo_bf->save_all( ).
zcl_abapgit_objects_activation=>add_item( ms_item ).
@ -166,6 +168,7 @@ CLASS zcl_abapgit_object_sfbf IMPLEMENTATION.
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ).
rs_metadata-ddic = abap_true.
rs_metadata-delete_tadir = abap_true.
ENDMETHOD.

View File

@ -120,6 +120,8 @@ CLASS zcl_abapgit_object_sfbs IMPLEMENTATION.
lo_bfs->set_nested_parent( lt_parent_bfs ).
set_default_package( iv_package ).
tadir_insert( iv_package ).
lo_bfs->save_all( ).
zcl_abapgit_objects_activation=>add_item( ms_item ).
@ -154,6 +156,7 @@ CLASS zcl_abapgit_object_sfbs IMPLEMENTATION.
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ).
rs_metadata-ddic = abap_true.
rs_metadata-delete_tadir = abap_true.
ENDMETHOD.

View File

@ -7,7 +7,8 @@ CLASS zcl_abapgit_object_sfsw DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
METHODS:
get
RETURNING VALUE(ro_switch) TYPE REF TO cl_sfw_sw
RAISING zcx_abapgit_exception.
RAISING zcx_abapgit_exception,
wait_for_background_job.
ENDCLASS.
@ -62,6 +63,10 @@ CLASS zcl_abapgit_object_sfsw IMPLEMENTATION.
lo_switch = cl_sfw_sw=>get_switch( lv_switch_id ).
lo_switch->set_delete_flag( lv_switch_id ).
lo_switch->save_all( ).
" deletion via background job. Wait until the job is finished.
wait_for_background_job( ).
CATCH cx_pak_invalid_data cx_pak_invalid_state cx_pak_not_authorized.
zcx_abapgit_exception=>raise( 'Error deleting Switch' ).
ENDTRY.
@ -110,6 +115,8 @@ CLASS zcl_abapgit_object_sfsw IMPLEMENTATION.
lo_switch->set_conflicts( lt_conflicts ).
set_default_package( iv_package ).
tadir_insert( iv_package ).
lo_switch->save_all(
EXCEPTIONS
not_saved = 1
@ -158,6 +165,16 @@ CLASS zcl_abapgit_object_sfsw IMPLEMENTATION.
ENDMETHOD.
METHOD zif_abapgit_object~is_active.
rv_active = is_active( ).
ENDMETHOD.
METHOD zif_abapgit_object~is_locked.
rv_is_locked = abap_false.
ENDMETHOD.
METHOD zif_abapgit_object~jump.
CALL FUNCTION 'RS_TOOL_ACCESS'
@ -215,12 +232,31 @@ CLASS zcl_abapgit_object_sfsw IMPLEMENTATION.
ENDMETHOD.
METHOD zif_abapgit_object~is_locked.
rv_is_locked = abap_false.
METHOD wait_for_background_job.
DATA: lv_job_count TYPE tbtco-jobcount.
" We wait for at most 5 seconds. If it takes
" more than that it probably doesn't matter,
" because we have other problems
DO 5 TIMES.
SELECT SINGLE jobcount
FROM tbtco
INTO lv_job_count
WHERE jobname = 'SFW_DELETE_SWITCH'
AND status = 'R'
AND sdluname = sy-uname.
IF sy-subrc = 0.
WAIT UP TO 1 SECONDS.
ELSE.
EXIT.
ENDIF.
ENDDO.
ENDMETHOD.
METHOD zif_abapgit_object~is_active.
rv_active = is_active( ).
ENDMETHOD.
ENDCLASS.