ZCL_ABAPGIT_TRANSPORT sort methods (#4251)

This commit is contained in:
Lars Hvam 2020-11-26 12:33:18 +01:00 committed by GitHub
parent 552024ac3f
commit 846e0a0e1b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -63,6 +63,115 @@ ENDCLASS.
CLASS ZCL_ABAPGIT_TRANSPORT IMPLEMENTATION. CLASS ZCL_ABAPGIT_TRANSPORT IMPLEMENTATION.
METHOD add_all_objects_to_trans_req.
DATA:
ls_request TYPE trwbo_request_header,
lt_e071 TYPE tr_objects,
lv_text TYPE string,
lv_answer TYPE c LENGTH 1,
lv_lock_objects TYPE trparflag.
lv_answer = zcl_abapgit_ui_factory=>get_popups( )->popup_to_confirm(
iv_titlebar = `Lock objects?`
iv_text_question = `Shall all objects be locked in the transport request?`
iv_display_cancel_button = abap_true ).
CASE lv_answer.
WHEN '1'.
lv_lock_objects = abap_true.
WHEN '2'.
lv_lock_objects = abap_false.
WHEN OTHERS.
RETURN.
ENDCASE.
lt_e071 = collect_all_objects( iv_key ).
CALL FUNCTION 'TR_REQUEST_CHOICE'
EXPORTING
it_e071 = lt_e071
iv_lock_objects = lv_lock_objects
IMPORTING
es_request = ls_request
EXCEPTIONS
invalid_request = 1
invalid_request_type = 2
user_not_owner = 3
no_objects_appended = 4
enqueue_error = 5
cancelled_by_user = 6
recursive_call = 7
OTHERS = 8.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
lv_text = |Objects successfully added to { ls_request-trkorr }|.
MESSAGE lv_text TYPE 'S'.
ENDMETHOD.
METHOD collect_all_objects.
DATA:
lt_objects TYPE scts_tadir,
lt_objects_all LIKE lt_objects,
ls_e071 LIKE LINE OF rt_objects,
lo_repo TYPE REF TO zcl_abapgit_repo,
lv_package TYPE zif_abapgit_persistence=>ty_repo-package,
lt_packages TYPE zif_abapgit_sap_package=>ty_devclass_tt.
FIELD-SYMBOLS:
<lv_package> TYPE devclass,
<ls_object> TYPE tadir.
lo_repo = zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ).
lv_package = lo_repo->get_package( ).
lt_packages = zcl_abapgit_factory=>get_sap_package( lv_package )->list_subpackages( ).
INSERT lv_package INTO TABLE lt_packages.
LOOP AT lt_packages ASSIGNING <lv_package>.
CLEAR: lt_objects.
CALL FUNCTION 'TRINT_SELECT_OBJECTS'
EXPORTING
iv_devclass = <lv_package>
iv_via_selscreen = abap_false
IMPORTING
et_objects_tadir = lt_objects
EXCEPTIONS
cancelled_by_user = 1
invalid_input = 2
OTHERS = 3.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |FM TRINT_SELECT_OBJECTS subrc={ sy-subrc }| ).
ENDIF.
INSERT LINES OF lt_objects INTO TABLE lt_objects_all.
ENDLOOP.
IF lines( lt_objects_all ) = 0.
zcx_abapgit_exception=>raise( |No objects found| ).
ENDIF.
LOOP AT lt_objects_all ASSIGNING <ls_object>.
CLEAR: ls_e071.
MOVE-CORRESPONDING <ls_object> TO ls_e071.
INSERT ls_e071 INTO TABLE rt_objects.
ENDLOOP.
ENDMETHOD.
METHOD find_top_package. METHOD find_top_package.
* assumption: all objects in transport share a common super package * assumption: all objects in transport share a common super package
@ -228,114 +337,4 @@ CLASS ZCL_ABAPGIT_TRANSPORT IMPLEMENTATION.
iv_show_log = iv_show_log_popup ). iv_show_log = iv_show_log_popup ).
ENDMETHOD. ENDMETHOD.
METHOD add_all_objects_to_trans_req.
DATA:
ls_request TYPE trwbo_request_header,
lt_e071 TYPE tr_objects,
lv_text TYPE string,
lv_answer TYPE c LENGTH 1,
lv_lock_objects TYPE trparflag.
lv_answer = zcl_abapgit_ui_factory=>get_popups( )->popup_to_confirm(
iv_titlebar = `Lock objects?`
iv_text_question = `Shall all objects be locked in the transport request?`
iv_display_cancel_button = abap_true ).
CASE lv_answer.
WHEN '1'.
lv_lock_objects = abap_true.
WHEN '2'.
lv_lock_objects = abap_false.
WHEN OTHERS.
RETURN.
ENDCASE.
lt_e071 = collect_all_objects( iv_key ).
CALL FUNCTION 'TR_REQUEST_CHOICE'
EXPORTING
it_e071 = lt_e071
iv_lock_objects = lv_lock_objects
IMPORTING
es_request = ls_request
EXCEPTIONS
invalid_request = 1
invalid_request_type = 2
user_not_owner = 3
no_objects_appended = 4
enqueue_error = 5
cancelled_by_user = 6
recursive_call = 7
OTHERS = 8.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
lv_text = |Objects successfully added to { ls_request-trkorr }|.
MESSAGE lv_text TYPE 'S'.
ENDMETHOD.
METHOD collect_all_objects.
DATA:
lt_objects TYPE scts_tadir,
lt_objects_all LIKE lt_objects,
ls_e071 LIKE LINE OF rt_objects,
lo_repo TYPE REF TO zcl_abapgit_repo,
lv_package TYPE zif_abapgit_persistence=>ty_repo-package,
lt_packages TYPE zif_abapgit_sap_package=>ty_devclass_tt.
FIELD-SYMBOLS:
<lv_package> TYPE devclass,
<ls_object> TYPE tadir.
lo_repo = zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ).
lv_package = lo_repo->get_package( ).
lt_packages = zcl_abapgit_factory=>get_sap_package( lv_package )->list_subpackages( ).
INSERT lv_package INTO TABLE lt_packages.
LOOP AT lt_packages ASSIGNING <lv_package>.
CLEAR: lt_objects.
CALL FUNCTION 'TRINT_SELECT_OBJECTS'
EXPORTING
iv_devclass = <lv_package>
iv_via_selscreen = abap_false
IMPORTING
et_objects_tadir = lt_objects
EXCEPTIONS
cancelled_by_user = 1
invalid_input = 2
OTHERS = 3.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |FM TRINT_SELECT_OBJECTS subrc={ sy-subrc }| ).
ENDIF.
INSERT LINES OF lt_objects INTO TABLE lt_objects_all.
ENDLOOP.
IF lines( lt_objects_all ) = 0.
zcx_abapgit_exception=>raise( |No objects found| ).
ENDIF.
LOOP AT lt_objects_all ASSIGNING <ls_object>.
CLEAR: ls_e071.
MOVE-CORRESPONDING <ls_object> TO ls_e071.
INSERT ls_e071 INTO TABLE rt_objects.
ENDLOOP.
ENDMETHOD.
ENDCLASS. ENDCLASS.