CLASS zcl_abapgit_default_transport DEFINITION PUBLIC CREATE PUBLIC . PUBLIC SECTION. INTERFACES zif_abapgit_default_transport. METHODS constructor RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. DATA mv_is_set_by_abapgit TYPE abap_bool . DATA ms_save TYPE e070use . METHODS store RAISING zcx_abapgit_exception . METHODS restore RAISING zcx_abapgit_exception . METHODS set_internal IMPORTING !iv_transport TYPE trkorr RAISING zcx_abapgit_exception . METHODS clear IMPORTING !is_default_task TYPE e070use RAISING zcx_abapgit_exception . ENDCLASS. CLASS ZCL_ABAPGIT_DEFAULT_TRANSPORT IMPLEMENTATION. METHOD clear. 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_t100( ). ENDIF. ENDMETHOD. METHOD constructor. store( ). ENDMETHOD. METHOD restore. IF ms_save 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-ordernum iv_task = ms_save-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_t100( ). ENDIF. ENDMETHOD. METHOD set_internal. CALL FUNCTION 'TR_TASK_SET' EXPORTING iv_order = iv_transport iv_validdays = 1 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_t100( ). ENDIF. ENDMETHOD. METHOD store. ms_save = zif_abapgit_default_transport~get( ). ENDMETHOD. METHOD zif_abapgit_default_transport~get. DATA lt_e070use TYPE STANDARD TABLE OF e070use WITH DEFAULT KEY. DATA ls_line LIKE LINE OF lt_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_t100( ). ENDIF. READ TABLE lt_e070use INTO ls_line INDEX 1. IF sy-subrc = 0. MOVE-CORRESPONDING ls_line TO rs_default_task. ENDIF. ENDMETHOD. METHOD zif_abapgit_default_transport~reset. DATA: ls_default_task TYPE e070use. IF mv_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_is_set_by_abapgit. ls_default_task = zif_abapgit_default_transport~get( ). IF ls_default_task IS NOT INITIAL. clear( ls_default_task ). ENDIF. restore( ). ENDMETHOD. METHOD zif_abapgit_default_transport~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. IF mv_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 iv_transport IS INITIAL. zcx_abapgit_exception=>raise( |No transport request was supplied| ). ENDIF. set_internal( iv_transport ). mv_is_set_by_abapgit = abap_true. ENDMETHOD. ENDCLASS.