From 56c58b7a29c05f533b3fe1a1924ec4e7879d28ec Mon Sep 17 00:00:00 2001 From: Jakub Filak Date: Mon, 11 Jun 2018 10:51:39 +0000 Subject: [PATCH 1/2] SAP Package: add the method get_transport_type For the parameters WI_ORDER_TYPE and WI_TASK_TYPE of the function TRINT_ORDER_CHOICE called from the method popup_transport_request of the class zcl_abapgit_popups. Sometimes we need a repair task but the function TRINT_ORDER_CHOICE searches for Development/Correction tasks. I hope that we can decide what task type is needed by a package (DEVC). Related to #1446 --- src/zcl_abapgit_sap_package.clas.abap | 39 +++++++++++++++++++++++++++ src/zif_abapgit_definitions.intf.abap | 5 ++++ src/zif_abapgit_sap_package.intf.abap | 3 +++ 3 files changed, 47 insertions(+) diff --git a/src/zcl_abapgit_sap_package.clas.abap b/src/zcl_abapgit_sap_package.clas.abap index ec58193c4..d8d06a9d2 100644 --- a/src/zcl_abapgit_sap_package.clas.abap +++ b/src/zcl_abapgit_sap_package.clas.abap @@ -298,4 +298,43 @@ CLASS zcl_abapgit_sap_package IMPLEMENTATION. ENDMETHOD. + METHOD zif_abapgit_sap_package~get_transport_type. + DATA: lv_err_prefix TYPE string, + lv_pkg_name TYPE e071-obj_name. + + lv_err_prefix = |TRINT_GET_REQUEST_TYPE(R3TR, DEVC, { mv_package })|. + lv_pkg_name = mv_package. + + CALL FUNCTION 'TRINT_GET_REQUEST_TYPE' + EXPORTING + iv_pgmid = 'R3TR' + iv_object = 'DEVC' + iv_obj_name = lv_pkg_name + IMPORTING + ev_request_type = rv_transport_type-request + ev_task_type = rv_transport_type-task + EXCEPTIONS + no_request_needed = 1 + internal_error = 2 + cts_initialization_failure = 3. + + CASE sy-subrc. + WHEN 0. + " OK! + + WHEN 1. + zcx_abapgit_exception=>raise( |{ lv_err_prefix }: transport is not needed| ). + + WHEN 2. + zcx_abapgit_exception=>raise( |{ lv_err_prefix }: internal error| ). + + WHEN 3. + zcx_abapgit_exception=>raise( |{ lv_err_prefix }: failed to initialized CTS| ). + + WHEN OTHERS. + zcx_abapgit_exception=>raise( |{ lv_err_prefix }: unrecognized return code| ). + ENDCASE. + + ENDMETHOD. + ENDCLASS. diff --git a/src/zif_abapgit_definitions.intf.abap b/src/zif_abapgit_definitions.intf.abap index 5404d74fe..6815147ba 100644 --- a/src/zif_abapgit_definitions.intf.abap +++ b/src/zif_abapgit_definitions.intf.abap @@ -111,6 +111,11 @@ INTERFACE zif_abapgit_definitions PUBLIC. decision TYPE ty_yes_no, END OF ty_requirements. + TYPES: BEGIN OF ty_transport_type, + request TYPE trfunction, + task TYPE trfunction, + END OF ty_transport_type. + TYPES: BEGIN OF ty_transport, required TYPE abap_bool, transport TYPE trkorr, diff --git a/src/zif_abapgit_sap_package.intf.abap b/src/zif_abapgit_sap_package.intf.abap index 14cf21106..08c200c51 100644 --- a/src/zif_abapgit_sap_package.intf.abap +++ b/src/zif_abapgit_sap_package.intf.abap @@ -16,6 +16,9 @@ INTERFACE zif_abapgit_sap_package PUBLIC. RETURNING VALUE(rv_bool) TYPE abap_bool, are_changes_recorded_in_tr_req RETURNING VALUE(rv_are_changes_rec_in_tr_req) TYPE abap_bool + RAISING zcx_abapgit_exception, + get_transport_type + RETURNING VALUE(rv_transport_type) TYPE zif_abapgit_definitions=>ty_transport_type RAISING zcx_abapgit_exception. ENDINTERFACE. From fb6efabfb9bde95c444f5bee41874cd606353490 Mon Sep 17 00:00:00 2001 From: Jakub Filak Date: Mon, 11 Jun 2018 10:57:45 +0000 Subject: [PATCH 2/2] tp: use the correct transport type in the tr popup We are developing in an infinity system which is somehow cloned into a new releases system. When we need to backport a bug fixes we do cherry-pick the commits and pull them the release system. However, in those systems we need to use the task type Repair. Hence, we need to overwrite the default value of the parameter wi_task_type of the function TRINT_ORDER_CHOICE which is 'S' (Development/Correction) with the value 'R'. I use the function TRINT_GET_REQUEST_TYPE and for the sake of simplicity I assume that it is enough to know the transport type of the repository package - in other words, it is no necessary to check every deserialized object. Related to #1446 --- src/ui/zcl_abapgit_popups.clas.abap | 5 +++++ src/ui/zcl_abapgit_services_repo.clas.abap | 3 ++- src/zcl_abapgit_objects.clas.abap | 10 +++++++--- src/zif_abapgit_definitions.intf.abap | 1 + 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/ui/zcl_abapgit_popups.clas.abap b/src/ui/zcl_abapgit_popups.clas.abap index 2f7003742..b684bec35 100644 --- a/src/ui/zcl_abapgit_popups.clas.abap +++ b/src/ui/zcl_abapgit_popups.clas.abap @@ -139,6 +139,8 @@ CLASS zcl_abapgit_popups DEFINITION RAISING zcx_abapgit_exception . CLASS-METHODS popup_transport_request + IMPORTING + !is_transport_type TYPE zif_abapgit_definitions=>ty_transport_type RETURNING VALUE(rv_transport) TYPE trkorr RAISING @@ -1015,6 +1017,9 @@ CLASS ZCL_ABAPGIT_POPUPS IMPLEMENTATION. lt_e071k TYPE STANDARD TABLE OF e071k. CALL FUNCTION 'TRINT_ORDER_CHOICE' + EXPORTING + wi_order_type = is_transport_type-request + wi_task_type = is_transport_type-task IMPORTING we_order = rv_transport TABLES diff --git a/src/ui/zcl_abapgit_services_repo.clas.abap b/src/ui/zcl_abapgit_services_repo.clas.abap index d06af1ade..aded62fa6 100644 --- a/src/ui/zcl_abapgit_services_repo.clas.abap +++ b/src/ui/zcl_abapgit_services_repo.clas.abap @@ -121,7 +121,8 @@ CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION. ENDIF. IF ls_checks-transport-required = abap_true. - ls_checks-transport-transport = zcl_abapgit_popups=>popup_transport_request( ). + ls_checks-transport-transport = zcl_abapgit_popups=>popup_transport_request( + is_transport_type = ls_checks-transport-type ). ENDIF. CATCH zcx_abapgit_cancel. diff --git a/src/zcl_abapgit_objects.clas.abap b/src/zcl_abapgit_objects.clas.abap index 3ec8f6bd2..f90a34860 100644 --- a/src/zcl_abapgit_objects.clas.abap +++ b/src/zcl_abapgit_objects.clas.abap @@ -520,7 +520,8 @@ CLASS ZCL_ABAPGIT_OBJECTS IMPLEMENTATION. METHOD deserialize_checks. - DATA: lt_results TYPE zif_abapgit_definitions=>ty_results_tt. + DATA: lt_results TYPE zif_abapgit_definitions=>ty_results_tt, + li_package TYPE REF TO zif_abapgit_sap_package. lt_results = files_to_deserialize( io_repo ). @@ -532,8 +533,11 @@ CLASS ZCL_ABAPGIT_OBJECTS IMPLEMENTATION. it_results = lt_results ). IF lines( lt_results ) > 0. - rs_checks-transport-required = zcl_abapgit_sap_package=>get( io_repo->get_package( ) - )->are_changes_recorded_in_tr_req( ). + li_package = zcl_abapgit_sap_package=>get( io_repo->get_package( ) ). + 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( ). + ENDIF. ENDIF. ENDMETHOD. diff --git a/src/zif_abapgit_definitions.intf.abap b/src/zif_abapgit_definitions.intf.abap index 6815147ba..26b75afbb 100644 --- a/src/zif_abapgit_definitions.intf.abap +++ b/src/zif_abapgit_definitions.intf.abap @@ -119,6 +119,7 @@ INTERFACE zif_abapgit_definitions PUBLIC. TYPES: BEGIN OF ty_transport, required TYPE abap_bool, transport TYPE trkorr, + type TYPE ty_transport_type, END OF ty_transport.