mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 04:08:27 +08:00
Merge pull request #1045 from christianguenter2/ISSUE_1042
Use default transport request to prevent annoying transport popups
This commit is contained in:
commit
6dd3d81ef3
|
@ -440,6 +440,9 @@ CLASS lcl_objects IMPLEMENTATION.
|
|||
FIELD-SYMBOLS: <ls_result> TYPE zif_abapgit_definitions=>ty_result,
|
||||
<ls_deser> LIKE LINE OF lt_late.
|
||||
|
||||
lv_package = io_repo->get_package( ).
|
||||
|
||||
zcl_abapgit_default_task=>get_instance( )->set( lv_package ).
|
||||
|
||||
lcl_objects_activation=>clear( ).
|
||||
|
||||
|
@ -537,6 +540,8 @@ CLASS lcl_objects IMPLEMENTATION.
|
|||
SORT rt_accessed_files BY path ASCENDING filename ASCENDING.
|
||||
DELETE ADJACENT DUPLICATES FROM rt_accessed_files. " Just in case
|
||||
|
||||
zcl_abapgit_default_task=>get_instance( )->reset( ).
|
||||
|
||||
ENDMETHOD. "deserialize
|
||||
|
||||
METHOD deserialize_objects.
|
||||
|
|
|
@ -549,8 +549,8 @@ CLASS lcl_repo IMPLEMENTATION.
|
|||
METHOD deserialize.
|
||||
|
||||
DATA: lt_updated_files TYPE zif_abapgit_definitions=>ty_file_signatures_tt,
|
||||
lt_requirements TYPE STANDARD TABLE OF lcl_dot_abapgit=>ty_requirement.
|
||||
|
||||
lt_requirements TYPE STANDARD TABLE OF lcl_dot_abapgit=>ty_requirement,
|
||||
lx_error TYPE REF TO zcx_abapgit_exception.
|
||||
|
||||
find_remote_dot_abapgit( ).
|
||||
|
||||
|
@ -564,7 +564,16 @@ CLASS lcl_repo IMPLEMENTATION.
|
|||
iv_show_popup = abap_true ).
|
||||
ENDIF.
|
||||
|
||||
lt_updated_files = lcl_objects=>deserialize( me ).
|
||||
TRY.
|
||||
lt_updated_files = lcl_objects=>deserialize( me ).
|
||||
|
||||
CATCH zcx_abapgit_exception INTO lx_error.
|
||||
|
||||
" ensure to reset default transport request task
|
||||
zcl_abapgit_default_task=>get_instance( )->reset( ).
|
||||
zcx_abapgit_exception=>raise( lx_error->text ).
|
||||
|
||||
ENDTRY.
|
||||
|
||||
APPEND get_dot_abapgit( )->get_signature( ) TO lt_updated_files.
|
||||
|
||||
|
|
322
src/zcl_abapgit_default_task.clas.abap
Normal file
322
src/zcl_abapgit_default_task.clas.abap
Normal file
|
@ -0,0 +1,322 @@
|
|||
CLASS zcl_abapgit_default_task DEFINITION
|
||||
PUBLIC
|
||||
FINAL
|
||||
CREATE PUBLIC .
|
||||
|
||||
PUBLIC SECTION.
|
||||
CLASS-METHODS:
|
||||
get_instance
|
||||
RETURNING
|
||||
VALUE(ro_instance) TYPE REF TO zcl_abapgit_default_task
|
||||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
|
||||
METHODS:
|
||||
constructor
|
||||
RAISING
|
||||
zcx_abapgit_exception,
|
||||
|
||||
set
|
||||
IMPORTING
|
||||
iv_package TYPE devclass
|
||||
RAISING
|
||||
zcx_abapgit_exception,
|
||||
|
||||
reset
|
||||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
|
||||
PRIVATE SECTION.
|
||||
CLASS-DATA: mo_instance TYPE REF TO zcl_abapgit_default_task.
|
||||
|
||||
DATA: mv_task_is_set_by_abapgit TYPE abap_bool,
|
||||
ms_save_default_task TYPE e070use.
|
||||
|
||||
METHODS:
|
||||
store_current_default_task
|
||||
RAISING
|
||||
zcx_abapgit_exception,
|
||||
|
||||
restore_saved_default_task
|
||||
RAISING
|
||||
zcx_abapgit_exception,
|
||||
|
||||
get_default_task
|
||||
RETURNING
|
||||
VALUE(rs_default_task) TYPE e070use
|
||||
RAISING
|
||||
zcx_abapgit_exception,
|
||||
|
||||
set_default_task
|
||||
IMPORTING
|
||||
iv_order TYPE trkorr
|
||||
iv_task TYPE trkorr
|
||||
RAISING
|
||||
zcx_abapgit_exception,
|
||||
|
||||
call_transport_order_popup
|
||||
EXPORTING
|
||||
ev_order TYPE trkorr
|
||||
ev_task TYPE trkorr
|
||||
RAISING
|
||||
zcx_abapgit_exception,
|
||||
|
||||
are_objects_recorded_in_tr_req
|
||||
IMPORTING
|
||||
iv_package TYPE devclass
|
||||
RETURNING
|
||||
VALUE(rv_are_objects_recorded) TYPE abap_bool
|
||||
RAISING
|
||||
zcx_abapgit_exception,
|
||||
|
||||
clear_default_task
|
||||
IMPORTING
|
||||
is_default_task TYPE e070use
|
||||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS zcl_abapgit_default_task IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD get_instance.
|
||||
|
||||
IF mo_instance IS NOT BOUND.
|
||||
|
||||
CREATE OBJECT mo_instance.
|
||||
|
||||
ENDIF.
|
||||
|
||||
ro_instance = mo_instance.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD constructor.
|
||||
|
||||
store_current_default_task( ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD set.
|
||||
|
||||
" checks whether object changes of the package are rerorded in transport
|
||||
" requests. If true then we set the default task, so that no annoying
|
||||
" transport request popups are shown while deserializing.
|
||||
|
||||
DATA: lv_order TYPE trkorr,
|
||||
lv_task TYPE trkorr.
|
||||
|
||||
IF mv_task_is_set_by_abapgit = abap_true.
|
||||
" the default transport request task is already set by us
|
||||
" -> no reason to do it again.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
IF are_objects_recorded_in_tr_req( iv_package ) = abap_false.
|
||||
" Objects of package are not recorded in transport request,
|
||||
" no need to proceed.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
call_transport_order_popup(
|
||||
IMPORTING
|
||||
ev_order = lv_order
|
||||
ev_task = lv_task ).
|
||||
|
||||
set_default_task( iv_order = lv_order
|
||||
iv_task = lv_task ).
|
||||
|
||||
mv_task_is_set_by_abapgit = abap_true.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD reset.
|
||||
|
||||
DATA: ls_default_task TYPE e070use.
|
||||
|
||||
IF mv_task_is_set_by_abapgit = abap_false.
|
||||
" if the default transport request task isn't set
|
||||
" by us there is nothing to do.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
CLEAR mv_task_is_set_by_abapgit.
|
||||
|
||||
ls_default_task = get_default_task( ).
|
||||
|
||||
IF ls_default_task IS NOT INITIAL.
|
||||
|
||||
clear_default_task( ls_default_task ).
|
||||
|
||||
ENDIF.
|
||||
|
||||
restore_saved_default_task( ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD store_current_default_task.
|
||||
|
||||
ms_save_default_task = get_default_task( ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD restore_saved_default_task.
|
||||
|
||||
IF ms_save_default_task IS INITIAL.
|
||||
" There wasn't a default transport request before
|
||||
" so we needn't restore anything.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
CALL FUNCTION 'TR_TASK_SET'
|
||||
EXPORTING
|
||||
iv_order = ms_save_default_task-ordernum
|
||||
iv_task = ms_save_default_task-tasknum
|
||||
EXCEPTIONS
|
||||
invalid_username = 1
|
||||
invalid_category = 2
|
||||
invalid_client = 3
|
||||
invalid_validdays = 4
|
||||
invalid_order = 5
|
||||
invalid_task = 6
|
||||
OTHERS = 7.
|
||||
|
||||
IF sy-subrc <> 0.
|
||||
zcx_abapgit_exception=>raise( |Error from TR_TASK_SET { sy-subrc }| ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_default_task.
|
||||
|
||||
DATA: lt_e070use TYPE STANDARD TABLE OF e070use.
|
||||
|
||||
CALL FUNCTION 'TR_TASK_GET'
|
||||
TABLES
|
||||
tt_e070use = lt_e070use
|
||||
EXCEPTIONS
|
||||
invalid_username = 1
|
||||
invalid_category = 2
|
||||
invalid_client = 3
|
||||
OTHERS = 4.
|
||||
|
||||
IF sy-subrc <> 0.
|
||||
zcx_abapgit_exception=>raise( |Error from TR_TASK_GET { sy-subrc }| ).
|
||||
ENDIF.
|
||||
|
||||
READ TABLE lt_e070use INTO rs_default_task
|
||||
INDEX 1.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD set_default_task.
|
||||
|
||||
CALL FUNCTION 'TR_TASK_SET'
|
||||
EXPORTING
|
||||
iv_order = iv_order
|
||||
iv_task = iv_task
|
||||
EXCEPTIONS
|
||||
invalid_username = 1
|
||||
invalid_category = 2
|
||||
invalid_client = 3
|
||||
invalid_validdays = 4
|
||||
invalid_order = 5
|
||||
invalid_task = 6
|
||||
OTHERS = 7.
|
||||
|
||||
IF sy-subrc <> 0.
|
||||
zcx_abapgit_exception=>raise( |Error from TR_TASK_SET { sy-subrc }| ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD clear_default_task.
|
||||
|
||||
CALL FUNCTION 'TR_TASK_RESET'
|
||||
EXPORTING
|
||||
iv_username = is_default_task-username
|
||||
iv_order = is_default_task-ordernum
|
||||
iv_task = is_default_task-tasknum
|
||||
iv_dialog = abap_false
|
||||
EXCEPTIONS
|
||||
invalid_username = 1
|
||||
invalid_order = 2
|
||||
invalid_task = 3
|
||||
OTHERS = 4.
|
||||
|
||||
IF sy-subrc <> 0.
|
||||
zcx_abapgit_exception=>raise( |Error from TR_TASK_RESET { sy-subrc }| ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD call_transport_order_popup.
|
||||
|
||||
DATA: lt_e071 TYPE STANDARD TABLE OF e071,
|
||||
lt_e071k TYPE STANDARD TABLE OF e071k.
|
||||
|
||||
CLEAR: ev_order,
|
||||
ev_task.
|
||||
|
||||
CALL FUNCTION 'TRINT_ORDER_CHOICE'
|
||||
IMPORTING
|
||||
we_order = ev_order
|
||||
we_task = ev_task
|
||||
TABLES
|
||||
wt_e071 = lt_e071
|
||||
wt_e071k = lt_e071k
|
||||
EXCEPTIONS
|
||||
no_correction_selected = 1
|
||||
display_mode = 2
|
||||
object_append_error = 3
|
||||
recursive_call = 4
|
||||
wrong_order_type = 5
|
||||
OTHERS = 6.
|
||||
|
||||
IF sy-subrc = 1.
|
||||
zcx_abapgit_exception=>raise( 'cancelled' ).
|
||||
ELSEIF sy-subrc > 1.
|
||||
zcx_abapgit_exception=>raise( |Error from TRINT_ORDER_CHOICE { sy-subrc }| ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD are_objects_recorded_in_tr_req.
|
||||
|
||||
DATA: li_package TYPE REF TO if_package.
|
||||
|
||||
cl_package_factory=>load_package(
|
||||
EXPORTING
|
||||
i_package_name = iv_package
|
||||
IMPORTING
|
||||
e_package = li_package
|
||||
EXCEPTIONS
|
||||
object_not_existing = 1
|
||||
unexpected_error = 2
|
||||
intern_err = 3
|
||||
no_access = 4
|
||||
object_locked_and_modified = 5
|
||||
OTHERS = 6 ).
|
||||
|
||||
IF sy-subrc <> 0.
|
||||
zcx_abapgit_exception=>raise( |Error from CL_PACKAGE_FACTORY=>LOAD_PACKAGE { sy-subrc }| ).
|
||||
ENDIF.
|
||||
|
||||
rv_are_objects_recorded = li_package->wbo_korr_flag.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
19
src/zcl_abapgit_default_task.clas.xml
Normal file
19
src/zcl_abapgit_default_task.clas.xml
Normal file
|
@ -0,0 +1,19 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>ZCL_ABAPGIT_DEFAULT_TASK</CLSNAME>
|
||||
<VERSION>1</VERSION>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>abapGit default transport request task</DESCRIPT>
|
||||
<EXPOSURE>2</EXPOSURE>
|
||||
<STATE>1</STATE>
|
||||
<CLSFINAL>X</CLSFINAL>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
Loading…
Reference in New Issue
Block a user