Merge pull request #518 from larshp/issue511

deserialization sequence changed #511
This commit is contained in:
Lars Hvam 2017-01-04 18:32:10 +01:00 committed by GitHub
commit 74d6da559b
13 changed files with 83 additions and 82 deletions

View File

@ -51,8 +51,9 @@ TYPES: ty_files_item_tt TYPE STANDARD TABLE OF ty_file_item WITH DEFAULT KEY.
TYPES: BEGIN OF ty_metadata,
class TYPE string,
version TYPE string,
late_deser TYPE string,
late_deser TYPE abap_bool,
delete_tadir TYPE abap_bool,
ddic TYPE abap_bool,
END OF ty_metadata.
TYPES: BEGIN OF ty_web_asset,

View File

@ -80,6 +80,7 @@ CLASS lcl_object_doma IMPLEMENTATION.
METHOD lif_object~get_metadata.
rs_metadata = get_metadata( ).
rs_metadata-ddic = abap_true.
ENDMETHOD. "lif_object~get_metadata
METHOD lif_object~exists.

View File

@ -73,6 +73,7 @@ CLASS lcl_object_dtel IMPLEMENTATION.
METHOD lif_object~get_metadata.
rs_metadata = get_metadata( ).
rs_metadata-ddic = abap_true.
ENDMETHOD. "lif_object~get_metadata
METHOD lif_object~exists.

View File

@ -53,6 +53,7 @@ CLASS lcl_object_enqu IMPLEMENTATION.
METHOD lif_object~get_metadata.
rs_metadata = get_metadata( ).
rs_metadata-ddic = abap_true.
ENDMETHOD. "lif_object~get_metadata
METHOD lif_object~exists.

View File

@ -39,6 +39,7 @@ CLASS lcl_object_sfbf IMPLEMENTATION.
METHOD lif_object~get_metadata.
rs_metadata = get_metadata( ).
rs_metadata-ddic = abap_true.
ENDMETHOD. "lif_object~get_metadata
METHOD lif_object~exists.

View File

@ -56,6 +56,7 @@ CLASS lcl_object_sfbs IMPLEMENTATION.
METHOD lif_object~get_metadata.
rs_metadata = get_metadata( ).
rs_metadata-ddic = abap_true.
ENDMETHOD. "lif_object~get_metadata
METHOD lif_object~exists.

View File

@ -39,6 +39,7 @@ CLASS lcl_object_sfsw IMPLEMENTATION.
METHOD lif_object~get_metadata.
rs_metadata = get_metadata( ).
rs_metadata-ddic = abap_true.
ENDMETHOD. "lif_object~get_metadata
METHOD lif_object~exists.

View File

@ -50,6 +50,7 @@ CLASS lcl_object_shlp IMPLEMENTATION.
METHOD lif_object~get_metadata.
rs_metadata = get_metadata( ).
rs_metadata-ddic = abap_true.
ENDMETHOD. "lif_object~get_metadata
METHOD lif_object~exists.

View File

@ -74,6 +74,7 @@ CLASS lcl_object_tabl IMPLEMENTATION.
METHOD lif_object~get_metadata.
rs_metadata = get_metadata( ).
rs_metadata-ddic = abap_true.
ENDMETHOD. "lif_object~get_metadata
METHOD lif_object~exists.

View File

@ -50,6 +50,7 @@ CLASS lcl_object_ttyp IMPLEMENTATION.
METHOD lif_object~get_metadata.
rs_metadata = get_metadata( ).
rs_metadata-ddic = abap_true.
ENDMETHOD. "lif_object~get_metadata
METHOD lif_object~exists.

View File

@ -60,6 +60,7 @@ CLASS lcl_object_view IMPLEMENTATION.
METHOD lif_object~get_metadata.
rs_metadata = get_metadata( ).
rs_metadata-ddic = abap_true.
ENDMETHOD. "lif_object~get_metadata
METHOD lif_object~exists.

View File

@ -20,6 +20,7 @@ CLASS lcl_objects_activation DEFINITION FINAL.
RAISING lcx_exception.
CLASS-METHODS activate
IMPORTING iv_ddic TYPE abap_bool DEFAULT abap_false
RAISING lcx_exception.
CLASS-METHODS clear.
@ -29,8 +30,7 @@ CLASS lcl_objects_activation DEFINITION FINAL.
IMPORTING iv_obj_name TYPE trobj_name
CHANGING ct_objects TYPE dwinactiv_tab.
CLASS-DATA: gt_ddic TYPE TABLE OF dwinactiv,
gt_programs TYPE TABLE OF dwinactiv.
CLASS-DATA: gt_objects TYPE TABLE OF dwinactiv.
ENDCLASS. "lcl_objects_activation DEFINITION
@ -47,38 +47,18 @@ CLASS lcl_objects_activation IMPLEMENTATION.
ENDMETHOD. "add_item
METHOD clear.
CLEAR: gt_ddic,
gt_programs.
CLEAR gt_objects.
ENDMETHOD. "clear
METHOD activate.
* ddic
IF NOT gt_ddic IS INITIAL.
IF NOT gt_objects IS INITIAL.
CALL FUNCTION 'RS_WORKING_OBJECTS_ACTIVATE'
EXPORTING
activate_ddic_objects = abap_true
activate_ddic_objects = iv_ddic
with_popup = abap_true
TABLES
objects = gt_ddic
EXCEPTIONS
excecution_error = 1
cancelled = 2
insert_into_corr_error = 3
OTHERS = 4.
IF sy-subrc <> 0.
lcx_exception=>raise( 'error from RS_WORKING_OBJECTS_ACTIVATE' ).
ENDIF.
ENDIF.
* programs
IF NOT gt_programs IS INITIAL.
CALL FUNCTION 'RS_WORKING_OBJECTS_ACTIVATE'
EXPORTING
activate_ddic_objects = abap_false
with_popup = abap_true
TABLES
objects = gt_programs
objects = gt_objects
EXCEPTIONS
excecution_error = 1
cancelled = 2
@ -139,9 +119,9 @@ CLASS lcl_objects_activation IMPLEMENTATION.
lv_obj_name = iv_name.
* todo, refactoring
CASE iv_type.
WHEN 'CLAS' OR 'WDYN'.
* todo, move this to the object type include instead
CALL FUNCTION 'RS_INACTIVE_OBJECTS_IN_OBJECT'
EXPORTING
obj_name = lv_obj_name
@ -160,22 +140,11 @@ CLASS lcl_objects_activation IMPLEMENTATION.
CHANGING ct_objects = lt_objects ).
ENDIF.
APPEND LINES OF lt_objects TO gt_programs.
WHEN 'DOMA' OR 'DTEL' OR 'TABL' OR 'INDX' OR 'TTYP'
OR 'VIEW' OR 'SHLP' OR 'ENQU'
OR 'SFSW' OR 'SFBF' OR 'SFBS'.
* todo also insert_into_working_area?
APPEND INITIAL LINE TO gt_ddic ASSIGNING <ls_object>.
<ls_object>-object = iv_type.
<ls_object>-obj_name = lv_obj_name.
WHEN 'REPS' OR 'DYNP' OR 'CUAD' OR 'REPT' OR 'INTF'
OR 'FUNC' OR 'ENHO' OR 'TYPE' OR 'XSLT' OR 'WEBI'.
* these seem to go into the workarea automatically
APPEND INITIAL LINE TO gt_programs ASSIGNING <ls_object>.
<ls_object>-object = iv_type.
<ls_object>-obj_name = lv_obj_name.
APPEND LINES OF lt_objects TO gt_objects.
WHEN OTHERS.
lcx_exception=>raise( 'activate, unknown type' ).
APPEND INITIAL LINE TO gt_objects ASSIGNING <ls_object>.
<ls_object>-object = iv_type.
<ls_object>-obj_name = lv_obj_name.
ENDCASE.
ENDMETHOD. "activate
@ -1656,11 +1625,14 @@ CLASS lcl_objects DEFINITION FINAL.
PUBLIC SECTION.
TYPES: ty_types_tt TYPE STANDARD TABLE OF tadir-object WITH DEFAULT KEY.
TYPES: BEGIN OF ty_late,
TYPES: BEGIN OF ty_deserialization,
obj TYPE REF TO lif_object,
xml TYPE REF TO lcl_xml_input,
package TYPE devclass,
END OF ty_late.
item TYPE ty_item,
END OF ty_deserialization.
TYPES: ty_deserialization_tt TYPE STANDARD TABLE OF ty_deserialization WITH DEFAULT KEY.
CLASS-METHODS serialize
IMPORTING is_item TYPE ty_item
@ -1705,10 +1677,6 @@ CLASS lcl_objects DEFINITION FINAL.
CLASS-METHODS supported_list
RETURNING VALUE(rt_types) TYPE ty_types_tt.
* CLASS-METHODS is_language_installed
* IMPORTING iv_language TYPE langu
* RETURNING VALUE(rv_yes) TYPE abap_bool.
PRIVATE SECTION.
CLASS-DATA: mv_langs_installed TYPE scplangs.
@ -1771,4 +1739,11 @@ CLASS lcl_objects DEFINITION FINAL.
RAISING
lcx_exception.
CLASS-METHODS deserialize_objects
IMPORTING it_objects TYPE ty_deserialization_tt
iv_ddic TYPE abap_bool DEFAULT abap_false
iv_descr TYPE string
CHANGING ct_files TYPE ty_file_signatures_tt
RAISING lcx_exception.
ENDCLASS. "lcl_object DEFINITION

View File

@ -207,18 +207,6 @@ CLASS lcl_objects IMPLEMENTATION.
ENDMETHOD. "supported_list
* METHOD is_language_installed.
*
* IF mv_langs_installed IS INITIAL.
* CALL FUNCTION 'RSAQ_READ_INSTALLED_LANGUAGES'
* IMPORTING
* inst_languages = mv_langs_installed.
* ENDIF.
*
* rv_yes = boolc( mv_langs_installed CA iv_language ).
*
* ENDMETHOD. "is_language_installed
METHOD exists.
DATA: li_obj TYPE REF TO lif_object.
@ -600,10 +588,12 @@ CLASS lcl_objects IMPLEMENTATION.
lo_files TYPE REF TO lcl_objects_files,
lo_xml TYPE REF TO lcl_xml_input,
lt_results TYPE ty_results_tt,
lt_late TYPE TABLE OF ty_late.
lt_ddic TYPE TABLE OF ty_deserialization,
lt_rest TYPE TABLE OF ty_deserialization,
lt_late TYPE TABLE OF ty_deserialization.
FIELD-SYMBOLS: <ls_result> TYPE ty_result,
<ls_late> LIKE LINE OF lt_late.
<ls_deser> LIKE LINE OF lt_late.
lcl_objects_activation=>clear( ).
@ -665,27 +655,31 @@ CLASS lcl_objects IMPLEMENTATION.
li_obj->mo_files = lo_files.
IF li_obj->get_metadata( )-late_deser = abap_true.
APPEND INITIAL LINE TO lt_late ASSIGNING <ls_late>.
<ls_late>-obj = li_obj.
<ls_late>-xml = lo_xml.
<ls_late>-package = lv_package.
CONTINUE.
APPEND INITIAL LINE TO lt_late ASSIGNING <ls_deser>.
ELSEIF li_obj->get_metadata( )-ddic = abap_true.
APPEND INITIAL LINE TO lt_ddic ASSIGNING <ls_deser>.
ELSE.
APPEND INITIAL LINE TO lt_rest ASSIGNING <ls_deser>.
ENDIF.
<ls_deser>-item = ls_item.
<ls_deser>-obj = li_obj.
<ls_deser>-xml = lo_xml.
<ls_deser>-package = lv_package.
li_obj->deserialize( iv_package = lv_package
io_xml = lo_xml ).
" Remember accessed files
APPEND LINES OF lo_files->get_accessed_files( ) TO rt_accessed_files.
ENDLOOP.
lcl_objects_activation=>activate( ).
deserialize_objects( EXPORTING it_objects = lt_ddic
iv_ddic = abap_true
iv_descr = 'DDIC'
CHANGING ct_files = rt_accessed_files ).
LOOP AT lt_late ASSIGNING <ls_late>.
<ls_late>-obj->deserialize( iv_package = <ls_late>-package
io_xml = <ls_late>-xml ).
ENDLOOP.
deserialize_objects( EXPORTING it_objects = lt_rest
iv_descr = 'Objects'
CHANGING ct_files = rt_accessed_files ).
deserialize_objects( EXPORTING it_objects = lt_late
iv_descr = 'Late'
CHANGING ct_files = rt_accessed_files ).
update_package_tree( io_repo->get_package( ) ).
@ -694,6 +688,27 @@ CLASS lcl_objects IMPLEMENTATION.
ENDMETHOD. "deserialize
METHOD deserialize_objects.
FIELD-SYMBOLS: <ls_obj> LIKE LINE OF it_objects.
lcl_objects_activation=>clear( ).
LOOP AT it_objects ASSIGNING <ls_obj>.
lcl_progress=>show( iv_key = |Deserialize { iv_descr }|
iv_current = sy-tabix
iv_total = lines( it_objects )
iv_text = <ls_obj>-item-obj_name ) ##NO_TEXT.
<ls_obj>-obj->deserialize( iv_package = <ls_obj>-package
io_xml = <ls_obj>-xml ).
APPEND LINES OF <ls_obj>-obj->mo_files->get_accessed_files( ) TO ct_files.
ENDLOOP.
lcl_objects_activation=>activate( iv_ddic ).
ENDMETHOD.
METHOD compare_remote_to_local.