From 70550822601c08cbde92a185f5f8fd0a5cd57c41 Mon Sep 17 00:00:00 2001 From: larshp Date: Mon, 5 Jun 2017 08:08:52 +0000 Subject: [PATCH] fix SHI3 diffs #483 --- src/zabapgit_object_shi3.prog.abap | 167 +++++++++++++++-------------- 1 file changed, 89 insertions(+), 78 deletions(-) diff --git a/src/zabapgit_object_shi3.prog.abap b/src/zabapgit_object_shi3.prog.abap index baf26fb0f..1ad2f903d 100644 --- a/src/zabapgit_object_shi3.prog.abap +++ b/src/zabapgit_object_shi3.prog.abap @@ -32,20 +32,20 @@ CLASS lcl_object_shi3 DEFINITION INHERITING FROM lcl_objects_super FINAL. METHODS jump_se43 RAISING lcx_exception. - METHODS strip_stamps + METHODS clear_fields CHANGING cs_head TYPE ttree ct_nodes TYPE hier_iface_t. - METHODS regenerate_ids - CHANGING ct_nodes TYPE hier_iface_t - ct_refs TYPE hier_ref_t - ct_texts TYPE hier_texts_t - RAISING lcx_exception. - - METHODS replace_id - IMPORTING iv_id TYPE clike - RETURNING VALUE(rv_new_id) TYPE ttree-id - RAISING lcx_exception. +* METHODS regenerate_ids +* CHANGING ct_nodes TYPE hier_iface_t +* ct_refs TYPE hier_ref_t +* ct_texts TYPE hier_texts_t +* RAISING lcx_exception. +* +* METHODS replace_id +* IMPORTING iv_id TYPE clike +* RETURNING VALUE(rv_new_id) TYPE ttree-id +* RAISING lcx_exception. ENDCLASS. "lcl_object_shi3 DEFINITION @@ -59,7 +59,17 @@ CLASS lcl_object_shi3 IMPLEMENTATION. ENDMETHOD. "lif_object~has_changed_since METHOD lif_object~changed_by. - rv_user = c_user_unknown. " todo + + DATA: ls_head TYPE ttree. + + CALL FUNCTION 'STREE_STRUCTURE_READ' + EXPORTING + structure_id = mv_tree_id + IMPORTING + structure_header = ls_head. + + rv_user = ls_head-luser. + ENDMETHOD. METHOD constructor. @@ -142,7 +152,6 @@ CLASS lcl_object_shi3 IMPLEMENTATION. no_authority = 2 canceled = 3 OTHERS = 4. - IF sy-subrc <> 0. lcx_exception=>raise( 'error from BMENU_DELETE_TREE, SHI3' ). ENDIF. @@ -180,7 +189,7 @@ CLASS lcl_object_shi3 IMPLEMENTATION. list_of_references = lt_refs list_of_texts = lt_texts. - strip_stamps( CHANGING cs_head = ls_head + clear_fields( CHANGING cs_head = ls_head ct_nodes = lt_nodes ). io_xml->add( iv_name = 'TREE_HEAD' @@ -196,81 +205,83 @@ CLASS lcl_object_shi3 IMPLEMENTATION. ENDMETHOD. "serialize - METHOD strip_stamps. + METHOD clear_fields. FIELD-SYMBOLS LIKE LINE OF ct_nodes. CLEAR: cs_head-luser, cs_head-ldate, cs_head-ltime. CLEAR: cs_head-fuser, cs_head-fdate, cs_head-ftime. + CLEAR: cs_head-frelease, cs_head-lrelease. CLEAR: cs_head-responsibl. LOOP AT ct_nodes ASSIGNING . CLEAR: -luser, -ldate, -ltime. CLEAR: -fuser, -fdate, -ftime. + CLEAR: -frelease, -lrelease. ENDLOOP. ENDMETHOD. "strip_stamps - METHOD regenerate_ids. - - DATA: ls_uid TYPE sys_uid, - lt_map TYPE tt_id_map. - - FIELD-SYMBOLS: LIKE LINE OF ct_nodes, - LIKE LINE OF ct_refs, - LIKE LINE OF ct_texts, - LIKE LINE OF mt_map. - - "Build map - LOOP AT ct_nodes ASSIGNING . - APPEND INITIAL LINE TO lt_map ASSIGNING . - IF -parent_id IS INITIAL. - -old = -node_id. - -new = -node_id. "Root node - ELSE. - CALL FUNCTION 'STREE_GET_UNIQUE_ID' - IMPORTING - unique_id = ls_uid. - - -old = -node_id. - -new = ls_uid-id. - ENDIF. - -node_id = -new. "Replace id - ENDLOOP. - - mt_map = lt_map. "Sort - - LOOP AT ct_nodes ASSIGNING . - -parent_id = replace_id( -parent_id ). - -brother_id = replace_id( -brother_id ). - ENDLOOP. - - LOOP AT ct_refs ASSIGNING . - -node_id = replace_id( -node_id ). - ENDLOOP. - - LOOP AT ct_texts ASSIGNING . - -node_id = replace_id( -node_id ). - ENDLOOP. - - ENDMETHOD. "regenerate_ids - - METHOD replace_id. - - DATA ls_map LIKE LINE OF mt_map. - - IF iv_id IS INITIAL. - RETURN. "No substitution for empty values - ENDIF. - - READ TABLE mt_map WITH TABLE KEY old = iv_id INTO ls_map. - IF sy-subrc <> 0. - lcx_exception=>raise( 'Cannot replace id, SHI3' ). - ENDIF. - - rv_new_id = ls_map-new. - - ENDMETHOD. "replace_id +* METHOD regenerate_ids. +* +* DATA: ls_uid TYPE sys_uid, +* lt_map TYPE tt_id_map. +* +* FIELD-SYMBOLS: LIKE LINE OF ct_nodes, +* LIKE LINE OF ct_refs, +* LIKE LINE OF ct_texts, +* LIKE LINE OF mt_map. +* +* "Build map +* LOOP AT ct_nodes ASSIGNING . +* APPEND INITIAL LINE TO lt_map ASSIGNING . +* IF -parent_id IS INITIAL. +* -old = -node_id. +* -new = -node_id. "Root node +* ELSE. +* CALL FUNCTION 'STREE_GET_UNIQUE_ID' +* IMPORTING +* unique_id = ls_uid. +* +* -old = -node_id. +* -new = ls_uid-id. +* ENDIF. +* -node_id = -new. "Replace id +* ENDLOOP. +* +* mt_map = lt_map. "Sort +* +* LOOP AT ct_nodes ASSIGNING . +* -parent_id = replace_id( -parent_id ). +* -brother_id = replace_id( -brother_id ). +* ENDLOOP. +* +* LOOP AT ct_refs ASSIGNING . +* -node_id = replace_id( -node_id ). +* ENDLOOP. +* +* LOOP AT ct_texts ASSIGNING . +* -node_id = replace_id( -node_id ). +* ENDLOOP. +* +* ENDMETHOD. "regenerate_ids +* +* METHOD replace_id. +* +* DATA ls_map LIKE LINE OF mt_map. +* +* IF iv_id IS INITIAL. +* RETURN. "No substitution for empty values +* ENDIF. +* +* READ TABLE mt_map WITH TABLE KEY old = iv_id INTO ls_map. +* IF sy-subrc <> 0. +* lcx_exception=>raise( 'Cannot replace id, SHI3' ). +* ENDIF. +* +* rv_new_id = ls_map-new. +* +* ENDMETHOD. "replace_id METHOD lif_object~deserialize. @@ -292,9 +303,9 @@ CLASS lcl_object_shi3 IMPLEMENTATION. io_xml->read( EXPORTING iv_name = 'TREE_TEXTS' CHANGING cg_data = lt_texts ). - regenerate_ids( CHANGING ct_nodes = lt_nodes - ct_refs = lt_refs - ct_texts = lt_texts ). +* regenerate_ids( CHANGING ct_nodes = lt_nodes +* ct_refs = lt_refs +* ct_texts = lt_texts ). IF lif_object~exists( ) = abap_true. lif_object~delete( ).