mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 20:03:20 +08:00
Set transport request in local repo settings or user exit (#5916)
This commit is contained in:
parent
87256f29c7
commit
97f357f107
|
@ -36,6 +36,12 @@ CLASS zcl_abapgit_transport DEFINITION
|
|||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
|
||||
CLASS-METHODS validate_transport_request
|
||||
IMPORTING
|
||||
iv_transport_request TYPE trkorr
|
||||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
|
||||
PROTECTED SECTION.
|
||||
|
||||
CLASS-METHODS read_requests
|
||||
|
@ -368,6 +374,36 @@ CLASS ZCL_ABAPGIT_TRANSPORT IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD validate_transport_request.
|
||||
|
||||
CONSTANTS:
|
||||
BEGIN OF c_tr_status,
|
||||
modifiable TYPE trstatus VALUE 'D',
|
||||
modifiable_protected TYPE trstatus VALUE 'L',
|
||||
release_started TYPE trstatus VALUE 'O',
|
||||
released TYPE trstatus VALUE 'R',
|
||||
released_with_import_protect TYPE trstatus VALUE 'N', " Released (with Import Protection for Repaired Objects)
|
||||
END OF c_tr_status.
|
||||
|
||||
DATA:
|
||||
ls_trkorr TYPE trwbo_request_header,
|
||||
ls_request TYPE trwbo_request,
|
||||
lv_text TYPE string.
|
||||
|
||||
ls_trkorr-trkorr = iv_transport_request.
|
||||
|
||||
ls_request = read( ls_trkorr ).
|
||||
|
||||
IF ls_request-h-trstatus <> c_tr_status-modifiable
|
||||
AND ls_request-h-trstatus <> c_tr_status-modifiable_protected.
|
||||
" Task/request &1 has already been released
|
||||
MESSAGE e064(tk) WITH iv_transport_request INTO lv_text.
|
||||
zcx_abapgit_exception=>raise_t100( ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zip.
|
||||
|
||||
DATA: lt_requests TYPE trwbo_requests,
|
||||
|
|
|
@ -11,6 +11,7 @@ CLASS zcl_abapgit_objects_check DEFINITION
|
|||
VALUE(rs_checks) TYPE zif_abapgit_definitions=>ty_deserialize_checks
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
CLASS-METHODS class_constructor.
|
||||
CLASS-METHODS checks_adjust
|
||||
IMPORTING
|
||||
!io_repo TYPE REF TO zcl_abapgit_repo
|
||||
|
@ -22,6 +23,7 @@ CLASS zcl_abapgit_objects_check DEFINITION
|
|||
PROTECTED SECTION.
|
||||
|
||||
PRIVATE SECTION.
|
||||
CLASS-DATA: gi_exit TYPE REF TO zif_abapgit_exit.
|
||||
|
||||
CLASS-METHODS warning_overwrite_adjust
|
||||
IMPORTING
|
||||
|
@ -51,12 +53,24 @@ CLASS zcl_abapgit_objects_check DEFINITION
|
|||
VALUE(rt_overwrite) TYPE zif_abapgit_definitions=>ty_overwrite_tt
|
||||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
CLASS-METHODS determine_transport_request
|
||||
IMPORTING
|
||||
io_repo TYPE REF TO zcl_abapgit_repo
|
||||
iv_transport_type TYPE zif_abapgit_definitions=>ty_transport_type
|
||||
RETURNING
|
||||
VALUE(rv_transport_request) TYPE trkorr.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS zcl_abapgit_objects_check IMPLEMENTATION.
|
||||
|
||||
METHOD class_constructor.
|
||||
|
||||
gi_exit = zcl_abapgit_exit=>get_instance( ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD checks_adjust.
|
||||
|
||||
|
@ -95,6 +109,9 @@ CLASS zcl_abapgit_objects_check IMPLEMENTATION.
|
|||
rs_checks-transport-required = li_package->are_changes_recorded_in_tr_req( ).
|
||||
IF NOT rs_checks-transport-required IS INITIAL.
|
||||
rs_checks-transport-type = li_package->get_transport_type( ).
|
||||
rs_checks-transport-transport = determine_transport_request(
|
||||
io_repo = io_repo
|
||||
iv_transport_type = rs_checks-transport-type ).
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
|
||||
|
@ -295,4 +312,21 @@ CLASS zcl_abapgit_objects_check IMPLEMENTATION.
|
|||
rt_overwrite = lt_overwrite_unique.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD determine_transport_request.
|
||||
|
||||
" Use transport from repo settings if maintained, or determine via user exit.
|
||||
" If transport keeps empty here, it'll requested later via popup.
|
||||
rv_transport_request = io_repo->get_local_settings( )-transport_request.
|
||||
|
||||
gi_exit->determine_transport_request(
|
||||
EXPORTING
|
||||
io_repo = io_repo
|
||||
iv_transport_type = iv_transport_type
|
||||
CHANGING
|
||||
cv_transport_request = rv_transport_request ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -28,6 +28,7 @@ INTERFACE zif_abapgit_persistence PUBLIC.
|
|||
block_commit TYPE abap_bool,
|
||||
main_language_only TYPE abap_bool,
|
||||
labels TYPE string,
|
||||
transport_request TYPE trkorr,
|
||||
END OF ty_local_settings.
|
||||
|
||||
TYPES: ty_local_checksum_tt TYPE STANDARD TABLE OF ty_local_checksum WITH DEFAULT KEY.
|
||||
|
|
|
@ -29,6 +29,7 @@ CLASS zcl_abapgit_gui_page_sett_locl DEFINITION
|
|||
BEGIN OF c_id,
|
||||
local TYPE string VALUE 'local',
|
||||
display_name TYPE string VALUE 'display_name',
|
||||
transport_request TYPE string VALUE 'transport_request',
|
||||
labels TYPE string VALUE 'labels',
|
||||
ignore_subpackages TYPE string VALUE 'ignore_subpackages',
|
||||
write_protected TYPE string VALUE 'write_protected',
|
||||
|
@ -40,9 +41,10 @@ CLASS zcl_abapgit_gui_page_sett_locl DEFINITION
|
|||
END OF c_id .
|
||||
CONSTANTS:
|
||||
BEGIN OF c_event,
|
||||
save TYPE string VALUE 'save',
|
||||
choose_labels TYPE string VALUE 'choose-labels',
|
||||
choose_check_variant TYPE string VALUE 'choose_check_variant',
|
||||
save TYPE string VALUE 'save',
|
||||
choose_transport_request TYPE string VALUE 'choose_transport_request',
|
||||
choose_labels TYPE string VALUE 'choose-labels',
|
||||
choose_check_variant TYPE string VALUE 'choose_check_variant',
|
||||
END OF c_event .
|
||||
|
||||
DATA mo_form TYPE REF TO zcl_abapgit_html_form .
|
||||
|
@ -77,6 +79,9 @@ CLASS zcl_abapgit_gui_page_sett_locl DEFINITION
|
|||
METHODS choose_check_variant
|
||||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
METHODS choose_transport_request
|
||||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
@ -119,6 +124,10 @@ CLASS zcl_abapgit_gui_page_sett_locl IMPLEMENTATION.
|
|||
|
||||
METHOD get_form_schema.
|
||||
|
||||
DATA: li_package TYPE REF TO zif_abapgit_sap_package.
|
||||
|
||||
li_package = zcl_abapgit_factory=>get_sap_package( mo_repo->get_package( ) ).
|
||||
|
||||
ro_form = zcl_abapgit_html_form=>create(
|
||||
iv_form_id = 'repo-local-settings-form'
|
||||
iv_help_page = 'https://docs.abapgit.org/settings-local.html' ).
|
||||
|
@ -130,8 +139,17 @@ CLASS zcl_abapgit_gui_page_sett_locl IMPLEMENTATION.
|
|||
)->text(
|
||||
iv_name = c_id-display_name
|
||||
iv_label = 'Display Name'
|
||||
iv_hint = 'Name to show instead of original repo name (optional)'
|
||||
)->text(
|
||||
iv_hint = 'Name to show instead of original repo name (optional)' ).
|
||||
|
||||
IF li_package->are_changes_recorded_in_tr_req( ) = abap_true.
|
||||
ro_form->text(
|
||||
iv_name = c_id-transport_request
|
||||
iv_side_action = c_event-choose_transport_request
|
||||
iv_label = |Transport request|
|
||||
iv_hint = 'Transport request; All changes are recorded therein and no transport popup appears|' ).
|
||||
ENDIF.
|
||||
|
||||
ro_form->text(
|
||||
iv_name = c_id-labels
|
||||
iv_side_action = c_event-choose_labels
|
||||
iv_label = |Labels (comma-separated, allowed chars: "{ zcl_abapgit_repo_labels=>c_allowed_chars }")|
|
||||
|
@ -185,6 +203,9 @@ CLASS zcl_abapgit_gui_page_sett_locl IMPLEMENTATION.
|
|||
mo_form_data->set(
|
||||
iv_key = c_id-display_name
|
||||
iv_val = ms_settings-display_name ).
|
||||
mo_form_data->set(
|
||||
iv_key = c_id-transport_request
|
||||
iv_val = ms_settings-transport_request ).
|
||||
mo_form_data->set(
|
||||
iv_key = c_id-labels
|
||||
iv_val = ms_settings-labels ).
|
||||
|
@ -216,6 +237,7 @@ CLASS zcl_abapgit_gui_page_sett_locl IMPLEMENTATION.
|
|||
METHOD save_settings.
|
||||
|
||||
ms_settings-display_name = mo_form_data->get( c_id-display_name ).
|
||||
ms_settings-transport_request = mo_form_data->get( c_id-transport_request ).
|
||||
ms_settings-labels = zcl_abapgit_repo_labels=>normalize( mo_form_data->get( c_id-labels ) ).
|
||||
ms_settings-ignore_subpackages = mo_form_data->get( c_id-ignore_subpackages ).
|
||||
ms_settings-main_language_only = mo_form_data->get( c_id-main_language_only ).
|
||||
|
@ -238,11 +260,23 @@ CLASS zcl_abapgit_gui_page_sett_locl IMPLEMENTATION.
|
|||
METHOD validate_form.
|
||||
|
||||
DATA:
|
||||
lx_error TYPE REF TO zcx_abapgit_exception,
|
||||
lv_check_variant TYPE sci_chkv.
|
||||
lx_error TYPE REF TO zcx_abapgit_exception,
|
||||
lv_transport_request TYPE trkorr,
|
||||
lv_check_variant TYPE sci_chkv.
|
||||
|
||||
ro_validation_log = mo_form_util->validate( io_form_data ).
|
||||
|
||||
lv_transport_request = io_form_data->get( c_id-transport_request ).
|
||||
IF lv_transport_request IS NOT INITIAL.
|
||||
TRY.
|
||||
zcl_abapgit_transport=>validate_transport_request( lv_transport_request ).
|
||||
CATCH zcx_abapgit_exception INTO lx_error.
|
||||
ro_validation_log->set(
|
||||
iv_key = c_id-transport_request
|
||||
iv_val = lx_error->get_text( ) ).
|
||||
ENDTRY.
|
||||
ENDIF.
|
||||
|
||||
lv_check_variant = to_upper( io_form_data->get( c_id-code_inspector_check_variant ) ).
|
||||
IF lv_check_variant IS NOT INITIAL.
|
||||
TRY.
|
||||
|
@ -279,6 +313,11 @@ CLASS zcl_abapgit_gui_page_sett_locl IMPLEMENTATION.
|
|||
WHEN zif_abapgit_definitions=>c_action-go_back.
|
||||
rs_handled-state = mo_form_util->exit( mo_form_data ).
|
||||
|
||||
WHEN c_event-choose_transport_request.
|
||||
|
||||
choose_transport_request( ).
|
||||
rs_handled-state = zcl_abapgit_gui=>c_event_state-re_render.
|
||||
|
||||
WHEN c_event-choose_labels.
|
||||
|
||||
choose_labels( ).
|
||||
|
@ -362,4 +401,19 @@ CLASS zcl_abapgit_gui_page_sett_locl IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD choose_transport_request.
|
||||
|
||||
DATA: lv_transport_request TYPE trkorr.
|
||||
|
||||
lv_transport_request = zcl_abapgit_ui_factory=>get_popups( )->popup_transport_request( ).
|
||||
|
||||
IF lv_transport_request IS NOT INITIAL.
|
||||
mo_form_data->set(
|
||||
iv_key = c_id-transport_request
|
||||
iv_val = lv_transport_request ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -295,7 +295,8 @@ CLASS zcl_abapgit_services_repo IMPLEMENTATION.
|
|||
zcl_abapgit_apack_helper=>dependencies_popup( lt_dependencies ).
|
||||
ENDIF.
|
||||
|
||||
IF cs_checks-transport-required = abap_true.
|
||||
IF cs_checks-transport-required = abap_true
|
||||
AND cs_checks-transport-transport IS INITIAL.
|
||||
cs_checks-transport-transport = zcl_abapgit_ui_factory=>get_popups( )->popup_transport_request(
|
||||
is_transport_type = cs_checks-transport-type ).
|
||||
ENDIF.
|
||||
|
|
|
@ -107,8 +107,9 @@ INTERFACE zif_abapgit_popups
|
|||
zcx_abapgit_exception .
|
||||
METHODS popup_transport_request
|
||||
IMPORTING
|
||||
!is_transport_type TYPE zif_abapgit_definitions=>ty_transport_type
|
||||
!is_transport_type TYPE zif_abapgit_definitions=>ty_transport_type OPTIONAL
|
||||
!iv_use_default_transport TYPE abap_bool DEFAULT abap_false
|
||||
PREFERRED PARAMETER is_transport_type
|
||||
RETURNING
|
||||
VALUE(rv_transport) TYPE trkorr
|
||||
RAISING
|
||||
|
|
|
@ -323,4 +323,22 @@ CLASS zcl_abapgit_exit IMPLEMENTATION.
|
|||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_exit~determine_transport_request.
|
||||
|
||||
IF gi_exit IS NOT INITIAL.
|
||||
TRY.
|
||||
gi_exit->determine_transport_request(
|
||||
EXPORTING
|
||||
io_repo = io_repo
|
||||
iv_transport_type = iv_transport_type
|
||||
CHANGING
|
||||
cv_transport_request = cv_transport_request ).
|
||||
CATCH cx_sy_ref_is_initial cx_sy_dyn_call_illegal_method ##NO_HANDLER.
|
||||
ENDTRY.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -108,7 +108,13 @@ INTERFACE zif_abapgit_exit
|
|||
!ct_files TYPE zif_abapgit_definitions=>ty_files_item_tt.
|
||||
METHODS adjust_display_filename
|
||||
IMPORTING
|
||||
!iv_filename TYPE string
|
||||
iv_filename TYPE string
|
||||
RETURNING
|
||||
VALUE(rv_filename) TYPE string.
|
||||
METHODS determine_transport_request
|
||||
IMPORTING
|
||||
io_repo TYPE REF TO zcl_abapgit_repo
|
||||
iv_transport_type TYPE zif_abapgit_definitions=>ty_transport_type
|
||||
CHANGING
|
||||
cv_transport_request TYPE trkorr.
|
||||
ENDINTERFACE.
|
||||
|
|
Loading…
Reference in New Issue
Block a user