mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 04:08:27 +08:00
transport to zip, close #271
This commit is contained in:
parent
f3b2f0ec33
commit
71447f8538
|
@ -474,12 +474,21 @@ CLASS lcl_objects IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD serialize.
|
METHOD serialize.
|
||||||
|
|
||||||
DATA: lt_files TYPE ty_files_tt,
|
DATA: li_obj TYPE REF TO lif_object,
|
||||||
li_obj TYPE REF TO lif_object,
|
|
||||||
lo_xml TYPE REF TO lcl_xml_output,
|
lo_xml TYPE REF TO lcl_xml_output,
|
||||||
lo_files TYPE REF TO lcl_objects_files.
|
lo_files TYPE REF TO lcl_objects_files.
|
||||||
|
|
||||||
|
|
||||||
|
IF is_supported( is_item ) = abap_false.
|
||||||
|
IF NOT io_log IS INITIAL.
|
||||||
|
io_log->add( iv_msgv1 = 'Object type ignored, not supported:'
|
||||||
|
iv_msgv2 = is_item-obj_type
|
||||||
|
iv_msgv3 = '-'
|
||||||
|
iv_msgv4 = is_item-obj_name ) ##no_text.
|
||||||
|
ENDIF.
|
||||||
|
RETURN.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
CREATE OBJECT lo_files
|
CREATE OBJECT lo_files
|
||||||
EXPORTING
|
EXPORTING
|
||||||
is_item = is_item.
|
is_item = is_item.
|
||||||
|
@ -494,15 +503,23 @@ CLASS lcl_objects IMPLEMENTATION.
|
||||||
|
|
||||||
rt_files = lo_files->get_files( ).
|
rt_files = lo_files->get_files( ).
|
||||||
|
|
||||||
* check for duplicates
|
check_duplicates( rt_files ).
|
||||||
lt_files[] = rt_files[].
|
|
||||||
|
ENDMETHOD. "serialize
|
||||||
|
|
||||||
|
METHOD check_duplicates.
|
||||||
|
|
||||||
|
DATA: lt_files TYPE ty_files_tt.
|
||||||
|
|
||||||
|
|
||||||
|
lt_files[] = it_files[].
|
||||||
SORT lt_files BY path ASCENDING filename ASCENDING.
|
SORT lt_files BY path ASCENDING filename ASCENDING.
|
||||||
DELETE ADJACENT DUPLICATES FROM lt_files COMPARING path filename.
|
DELETE ADJACENT DUPLICATES FROM lt_files COMPARING path filename.
|
||||||
IF lines( lt_files ) <> lines( rt_files ).
|
IF lines( lt_files ) <> lines( it_files ).
|
||||||
_raise 'Duplicates'.
|
_raise 'Duplicates'.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
ENDMETHOD. "serialize
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD prioritize_deser.
|
METHOD prioritize_deser.
|
||||||
|
|
||||||
|
|
|
@ -1389,6 +1389,7 @@ CLASS lcl_objects DEFINITION FINAL.
|
||||||
CLASS-METHODS serialize
|
CLASS-METHODS serialize
|
||||||
IMPORTING is_item TYPE ty_item
|
IMPORTING is_item TYPE ty_item
|
||||||
iv_language TYPE spras
|
iv_language TYPE spras
|
||||||
|
io_log TYPE REF TO lcl_log OPTIONAL
|
||||||
RETURNING VALUE(rt_files) TYPE ty_files_tt
|
RETURNING VALUE(rt_files) TYPE ty_files_tt
|
||||||
RAISING lcx_exception.
|
RAISING lcx_exception.
|
||||||
|
|
||||||
|
@ -1416,6 +1417,10 @@ CLASS lcl_objects DEFINITION FINAL.
|
||||||
RETURNING VALUE(rt_types) TYPE ty_types_tt.
|
RETURNING VALUE(rt_types) TYPE ty_types_tt.
|
||||||
|
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
|
CLASS-METHODS check_duplicates
|
||||||
|
IMPORTING it_files TYPE ty_files_tt
|
||||||
|
RAISING lcx_exception.
|
||||||
|
|
||||||
CLASS-METHODS create_object
|
CLASS-METHODS create_object
|
||||||
IMPORTING is_item TYPE ty_item
|
IMPORTING is_item TYPE ty_item
|
||||||
iv_language TYPE spras
|
iv_language TYPE spras
|
||||||
|
|
|
@ -327,18 +327,10 @@ CLASS lcl_repo IMPLEMENTATION.
|
||||||
ls_item-obj_type = <ls_tadir>-object.
|
ls_item-obj_type = <ls_tadir>-object.
|
||||||
ls_item-obj_name = <ls_tadir>-obj_name.
|
ls_item-obj_name = <ls_tadir>-obj_name.
|
||||||
|
|
||||||
IF lcl_objects=>is_supported( ls_item ) = abap_false.
|
lt_files = lcl_objects=>serialize(
|
||||||
IF NOT io_log IS INITIAL.
|
is_item = ls_item
|
||||||
io_log->add( iv_msgv1 = 'Object type ignored, not supported:'
|
iv_language = get_master_language( )
|
||||||
iv_msgv2 = ls_item-obj_type
|
io_log = io_log ).
|
||||||
iv_msgv3 = '-'
|
|
||||||
iv_msgv4 = ls_item-obj_name ) ##no_text.
|
|
||||||
ENDIF.
|
|
||||||
CONTINUE.
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
lt_files = lcl_objects=>serialize( is_item = ls_item
|
|
||||||
iv_language = get_master_language( ) ).
|
|
||||||
LOOP AT lt_files ASSIGNING <ls_file>.
|
LOOP AT lt_files ASSIGNING <ls_file>.
|
||||||
<ls_file>-path = mo_dot_abapgit->get_starting_folder( ) && <ls_tadir>-path.
|
<ls_file>-path = mo_dot_abapgit->get_starting_folder( ) && <ls_tadir>-path.
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,8 @@ CLASS lcl_sap_package DEFINITION FINAL.
|
||||||
iv_top TYPE devclass,
|
iv_top TYPE devclass,
|
||||||
list_subpackages IMPORTING iv_package TYPE devclass
|
list_subpackages IMPORTING iv_package TYPE devclass
|
||||||
RETURNING VALUE(rt_list) TYPE ty_devclass_tt,
|
RETURNING VALUE(rt_list) TYPE ty_devclass_tt,
|
||||||
|
list_superpackages IMPORTING iv_package TYPE devclass
|
||||||
|
RETURNING VALUE(rt_list) TYPE ty_devclass_tt,
|
||||||
create_local
|
create_local
|
||||||
IMPORTING iv_package TYPE devclass
|
IMPORTING iv_package TYPE devclass
|
||||||
RAISING lcx_exception,
|
RAISING lcx_exception,
|
||||||
|
@ -271,6 +273,26 @@ CLASS lcl_sap_package IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD list_superpackages.
|
||||||
|
|
||||||
|
DATA: lt_list LIKE rt_list,
|
||||||
|
lv_parent TYPE tdevc-parentcl,
|
||||||
|
lv_devclass LIKE LINE OF rt_list.
|
||||||
|
|
||||||
|
|
||||||
|
APPEND iv_package TO rt_list.
|
||||||
|
|
||||||
|
SELECT SINGLE parentcl INTO lv_parent
|
||||||
|
FROM tdevc WHERE devclass = iv_package. "#EC CI_GENBUFF
|
||||||
|
|
||||||
|
IF NOT lv_parent IS INITIAL.
|
||||||
|
APPEND lv_parent TO rt_list.
|
||||||
|
lt_list = list_superpackages( lv_devclass ).
|
||||||
|
APPEND LINES OF lt_list TO rt_list.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD list_subpackages.
|
METHOD list_subpackages.
|
||||||
|
|
||||||
DATA: lt_list LIKE rt_list,
|
DATA: lt_list LIKE rt_list,
|
||||||
|
|
|
@ -29,7 +29,6 @@ CLASS lcl_tadir DEFINITION FINAL.
|
||||||
RAISING lcx_exception,
|
RAISING lcx_exception,
|
||||||
build
|
build
|
||||||
IMPORTING iv_package TYPE tadir-devclass
|
IMPORTING iv_package TYPE tadir-devclass
|
||||||
iv_parent TYPE tadir-devclass
|
|
||||||
iv_path TYPE string
|
iv_path TYPE string
|
||||||
RETURNING VALUE(rt_tadir) TYPE ty_tadir_tt
|
RETURNING VALUE(rt_tadir) TYPE ty_tadir_tt
|
||||||
RAISING lcx_exception.
|
RAISING lcx_exception.
|
||||||
|
@ -87,7 +86,6 @@ CLASS lcl_tadir IMPLEMENTATION.
|
||||||
|
|
||||||
* start recursion
|
* start recursion
|
||||||
rt_tadir = build( iv_package = iv_package
|
rt_tadir = build( iv_package = iv_package
|
||||||
iv_parent = ''
|
|
||||||
iv_path = '' ).
|
iv_path = '' ).
|
||||||
|
|
||||||
rt_tadir = check_exists( rt_tadir ).
|
rt_tadir = check_exists( rt_tadir ).
|
||||||
|
@ -161,7 +159,6 @@ CLASS lcl_tadir IMPLEMENTATION.
|
||||||
CONCATENATE iv_path lv_path '/' INTO lv_path.
|
CONCATENATE iv_path lv_path '/' INTO lv_path.
|
||||||
|
|
||||||
lt_tadir = build( iv_package = <ls_tdevc>-devclass
|
lt_tadir = build( iv_package = <ls_tdevc>-devclass
|
||||||
iv_parent = iv_package
|
|
||||||
iv_path = lv_path ).
|
iv_path = lv_path ).
|
||||||
APPEND LINES OF lt_tadir TO rt_tadir.
|
APPEND LINES OF lt_tadir TO rt_tadir.
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
|
@ -2,18 +2,177 @@
|
||||||
*& Include ZABAPGIT_TRANSPORT
|
*& Include ZABAPGIT_TRANSPORT
|
||||||
*&---------------------------------------------------------------------*
|
*&---------------------------------------------------------------------*
|
||||||
|
|
||||||
CLASS lcl_transport DEFINITION.
|
CLASS lcl_transport DEFINITION FINAL.
|
||||||
|
|
||||||
PUBLIC SECTION.
|
PUBLIC SECTION.
|
||||||
CLASS-METHODS:
|
CLASS-METHODS:
|
||||||
zip RAISING lcx_exception.
|
zip RAISING lcx_exception.
|
||||||
|
|
||||||
|
PRIVATE SECTION.
|
||||||
|
CLASS-METHODS:
|
||||||
|
popup
|
||||||
|
RETURNING VALUE(rv_trkorr) TYPE e070-trkorr,
|
||||||
|
read_requests
|
||||||
|
IMPORTING iv_trkorr TYPE e070-trkorr
|
||||||
|
RETURNING VALUE(rt_requests) TYPE trwbo_requests
|
||||||
|
RAISING lcx_exception,
|
||||||
|
find_top_package
|
||||||
|
IMPORTING it_tadir TYPE scts_tadir
|
||||||
|
RETURNING VALUE(rv_package) TYPE devclass,
|
||||||
|
resolve
|
||||||
|
IMPORTING it_requests TYPE trwbo_requests
|
||||||
|
RETURNING VALUE(rt_tadir) TYPE scts_tadir
|
||||||
|
RAISING lcx_exception.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
CLASS lcl_transport IMPLEMENTATION.
|
CLASS lcl_transport IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD zip.
|
METHOD zip.
|
||||||
BREAK-POINT.
|
|
||||||
|
DATA: lt_requests TYPE trwbo_requests,
|
||||||
|
lt_tadir TYPE scts_tadir,
|
||||||
|
lv_package TYPE devclass,
|
||||||
|
ls_data TYPE lcl_persistence_repo=>ty_repo,
|
||||||
|
lo_repo TYPE REF TO lcl_repo_offline,
|
||||||
|
lv_trkorr TYPE e070-trkorr.
|
||||||
|
|
||||||
|
|
||||||
|
lv_trkorr = popup( ).
|
||||||
|
IF lv_trkorr IS INITIAL.
|
||||||
|
RETURN.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
lt_requests = read_requests( lv_trkorr ).
|
||||||
|
lt_tadir = resolve( lt_requests ).
|
||||||
|
IF lines( lt_tadir ) = 0.
|
||||||
|
_raise 'empty transport'.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
lv_package = find_top_package( lt_tadir ).
|
||||||
|
IF lv_package IS INITIAL.
|
||||||
|
_raise 'error finding super package'.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ls_data-key = 'TZIP'.
|
||||||
|
ls_data-package = lv_package.
|
||||||
|
ls_data-master_language = sy-langu.
|
||||||
|
|
||||||
|
CREATE OBJECT lo_repo
|
||||||
|
EXPORTING
|
||||||
|
is_data = ls_data.
|
||||||
|
|
||||||
|
lcl_zip=>export( io_repo = lo_repo
|
||||||
|
it_filter = lt_tadir ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD find_top_package.
|
||||||
|
* assumption: all objects in transport share a common super package
|
||||||
|
|
||||||
|
DATA: lt_obj TYPE lcl_sap_package=>ty_devclass_tt,
|
||||||
|
lt_super TYPE lcl_sap_package=>ty_devclass_tt,
|
||||||
|
lv_super LIKE LINE OF lt_super,
|
||||||
|
lv_index TYPE i.
|
||||||
|
|
||||||
|
FIELD-SYMBOLS: <ls_tadir> LIKE LINE OF it_tadir.
|
||||||
|
|
||||||
|
|
||||||
|
READ TABLE it_tadir INDEX 1 ASSIGNING <ls_tadir>.
|
||||||
|
ASSERT sy-subrc = 0.
|
||||||
|
lt_super = lcl_sap_package=>list_superpackages( <ls_tadir>-devclass ).
|
||||||
|
|
||||||
|
LOOP AT it_tadir ASSIGNING <ls_tadir>.
|
||||||
|
lt_obj = lcl_sap_package=>list_superpackages( <ls_tadir>-devclass ).
|
||||||
|
|
||||||
|
* filter out possibilities from lt_super
|
||||||
|
LOOP AT lt_super INTO lv_super.
|
||||||
|
lv_index = sy-tabix.
|
||||||
|
READ TABLE lt_obj FROM lv_super TRANSPORTING NO FIELDS.
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
DELETE lt_super INDEX lv_index.
|
||||||
|
ENDIF.
|
||||||
|
ENDLOOP.
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
SORT lt_super.
|
||||||
|
READ TABLE lt_super INDEX 1 INTO rv_package.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD popup.
|
||||||
|
|
||||||
|
CALL FUNCTION 'TR_F4_REQUESTS'
|
||||||
|
EXPORTING
|
||||||
|
iv_username = sy-uname
|
||||||
|
iv_trkorr_pattern = rv_trkorr
|
||||||
|
iv_trfunctions = sctsc_types_all
|
||||||
|
iv_trstatus = sctsc_states_changeable
|
||||||
|
IMPORTING
|
||||||
|
ev_selected_request = rv_trkorr.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD read_requests.
|
||||||
|
|
||||||
|
CALL FUNCTION 'TR_READ_REQUEST_WITH_TASKS'
|
||||||
|
EXPORTING
|
||||||
|
iv_trkorr = iv_trkorr
|
||||||
|
IMPORTING
|
||||||
|
et_requests = rt_requests
|
||||||
|
EXCEPTIONS
|
||||||
|
invalid_input = 1
|
||||||
|
OTHERS = 2.
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
_raise 'error from TR_READ_REQUEST_WITH_TASKS'.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD resolve.
|
||||||
|
|
||||||
|
DATA: lv_object TYPE tadir-object,
|
||||||
|
lv_obj_name TYPE tadir-obj_name,
|
||||||
|
lv_trobj_name TYPE trobj_name,
|
||||||
|
ls_tadir TYPE tadir.
|
||||||
|
|
||||||
|
FIELD-SYMBOLS: <ls_request> LIKE LINE OF it_requests,
|
||||||
|
<ls_object> LIKE LINE OF <ls_request>-objects.
|
||||||
|
|
||||||
|
|
||||||
|
LOOP AT it_requests ASSIGNING <ls_request>.
|
||||||
|
LOOP AT <ls_request>-objects ASSIGNING <ls_object>.
|
||||||
|
IF <ls_object>-pgmid = 'LIMU'.
|
||||||
|
CALL FUNCTION 'GET_R3TR_OBJECT_FROM_LIMU_OBJ'
|
||||||
|
EXPORTING
|
||||||
|
p_limu_objtype = <ls_object>-object
|
||||||
|
p_limu_objname = <ls_object>-obj_name
|
||||||
|
IMPORTING
|
||||||
|
p_r3tr_objtype = lv_object
|
||||||
|
p_r3tr_objname = lv_trobj_name
|
||||||
|
EXCEPTIONS
|
||||||
|
no_mapping = 1
|
||||||
|
OTHERS = 2.
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
_raise 'error from GET_R3TR_OBJECT_FROM_LIMU_OBJ'.
|
||||||
|
ENDIF.
|
||||||
|
lv_obj_name = lv_trobj_name.
|
||||||
|
ELSE.
|
||||||
|
lv_object = <ls_object>-object.
|
||||||
|
lv_obj_name = <ls_object>-obj_name.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ls_tadir = lcl_tadir=>read_single(
|
||||||
|
iv_object = lv_object
|
||||||
|
iv_obj_name = lv_obj_name ).
|
||||||
|
|
||||||
|
APPEND ls_tadir TO rt_tadir.
|
||||||
|
ENDLOOP.
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
SORT rt_tadir BY object ASCENDING obj_name ASCENDING.
|
||||||
|
DELETE ADJACENT DUPLICATES FROM rt_tadir COMPARING object obj_name.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
|
@ -15,8 +15,9 @@ CLASS lcl_zip DEFINITION FINAL.
|
||||||
RAISING lcx_exception.
|
RAISING lcx_exception.
|
||||||
|
|
||||||
CLASS-METHODS export
|
CLASS-METHODS export
|
||||||
IMPORTING io_repo TYPE REF TO lcl_repo
|
IMPORTING io_repo TYPE REF TO lcl_repo
|
||||||
iv_zip TYPE abap_bool DEFAULT abap_true
|
iv_zip TYPE abap_bool DEFAULT abap_true
|
||||||
|
it_filter TYPE scts_tadir OPTIONAL
|
||||||
RAISING lcx_exception.
|
RAISING lcx_exception.
|
||||||
|
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
|
@ -332,8 +333,11 @@ CLASS lcl_zip IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD export.
|
METHOD export.
|
||||||
|
|
||||||
DATA: lo_log TYPE REF TO lcl_log,
|
DATA: lo_log TYPE REF TO lcl_log,
|
||||||
lt_zip TYPE ty_files_item_tt.
|
lv_index TYPE i,
|
||||||
|
lt_zip TYPE ty_files_item_tt.
|
||||||
|
|
||||||
|
FIELD-SYMBOLS: <ls_zip> LIKE LINE OF lt_zip.
|
||||||
|
|
||||||
|
|
||||||
CREATE OBJECT lo_log.
|
CREATE OBJECT lo_log.
|
||||||
|
@ -344,9 +348,22 @@ CLASS lcl_zip IMPLEMENTATION.
|
||||||
lo_log->show( ).
|
lo_log->show( ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
|
IF lines( it_filter ) > 0.
|
||||||
|
LOOP AT lt_zip ASSIGNING <ls_zip>.
|
||||||
|
lv_index = sy-tabix.
|
||||||
|
READ TABLE it_filter WITH KEY
|
||||||
|
object = <ls_zip>-item-obj_type
|
||||||
|
obj_name = <ls_zip>-item-obj_name
|
||||||
|
TRANSPORTING NO FIELDS.
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
DELETE lt_zip INDEX lv_index.
|
||||||
|
ENDIF.
|
||||||
|
ENDLOOP.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
IF iv_zip = abap_true.
|
IF iv_zip = abap_true.
|
||||||
file_download( iv_package = io_repo->get_package( )
|
file_download( iv_package = io_repo->get_package( )
|
||||||
iv_xstr = encode_files( lt_zip ) ).
|
iv_xstr = encode_files( lt_zip ) ).
|
||||||
ELSE.
|
ELSE.
|
||||||
files_commit( lt_zip ).
|
files_commit( lt_zip ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user