From cc0a1963604974008c78eed6a937ce39d7f123f6 Mon Sep 17 00:00:00 2001 From: Lars Hvam Date: Thu, 17 Jul 2014 18:24:07 +0200 Subject: [PATCH] new approach for activating --- zabapgit.abap | 111 ++++++++++++++++++++++++++++++++------------------ 1 file changed, 71 insertions(+), 40 deletions(-) diff --git a/zabapgit.abap b/zabapgit.abap index 3d0822316..bb8125bd4 100644 --- a/zabapgit.abap +++ b/zabapgit.abap @@ -2,7 +2,7 @@ REPORT zabapgit. * See https://github.com/larshp/abapGit/ -CONSTANTS: gc_version TYPE string VALUE 'v0.1-alpha'. "#EC NOTEXT +CONSTANTS: gc_version TYPE string VALUE 'v0.x-alpha'. "#EC NOTEXT ******************************************************************************** * The MIT License (MIT) @@ -1042,6 +1042,10 @@ ENDCLASS. "lcl_diff IMPLEMENTATION *----------------------------------------------------------------------* CLASS lcl_serialize_common DEFINITION ABSTRACT. + PUBLIC SECTION. + CLASS-DATA: gt_ddic TYPE TABLE OF dwinactiv, + gt_programs TYPE TABLE OF dwinactiv. + PROTECTED SECTION. CLASS-METHODS: xml_to_file IMPORTING is_item TYPE st_item io_xml TYPE REF TO lcl_xml @@ -1065,7 +1069,7 @@ CLASS lcl_serialize_common DEFINITION ABSTRACT. RETURNING value(rs_file) TYPE st_file RAISING lcx_exception. - CLASS-METHODS: activate IMPORTING is_item TYPE st_item + CLASS-METHODS: into_working_area IMPORTING is_item TYPE st_item RAISING lcx_exception. CLASS-METHODS: corr_insert IMPORTING is_item TYPE st_item @@ -1104,7 +1108,9 @@ CLASS lcl_serialize_common IMPLEMENTATION. permission_failure = 2 unknown_objectclass = 3 OTHERS = 4. - IF sy-subrc <> 0. + IF sy-subrc = 1. + _raise 'Cancelled'. + ELSEIF sy-subrc <> 0. _raise 'error from RS_CORR_INSERT'. ENDIF. @@ -1121,13 +1127,17 @@ CLASS lcl_serialize_common IMPLEMENTATION. ENDMETHOD. "filename - METHOD activate. + METHOD into_working_area. * function group SEWORKINGAREA +* function module RS_INSERT_INTO_WORKING_AREA +* class CL_WB_ACTIVATION_WORK_AREA DATA: lt_objects TYPE dwinactiv_tab, lv_obj_name TYPE dwinactiv-obj_name. + FIELD-SYMBOLS: LIKE LINE OF lt_objects. + lv_obj_name = is_item-obj_name. @@ -1139,40 +1149,11 @@ CLASS lcl_serialize_common IMPLEMENTATION. object = is_item-obj_type TABLES inactive_objects = lt_objects. - - IF lt_objects[] IS INITIAL. - RETURN. - ENDIF. - - CALL FUNCTION 'RS_WORKING_OBJECTS_ACTIVATE' - TABLES - objects = lt_objects - EXCEPTIONS - excecution_error = 1 - cancelled = 2 - insert_into_corr_error = 3 - execution_error = 4 - OTHERS = 5. - IF sy-subrc <> 0. - _raise 'error from RS_WORKING_OBJECTS_ACTIVATE'. - ENDIF. - + APPEND LINES OF lt_objects TO lcl_serialize_common=>gt_programs. WHEN 'DOMA' OR 'DTEL'. - CALL FUNCTION 'RS_WORKING_OBJECT_ACTIVATE' - EXPORTING - object = is_item-obj_type - obj_name = lv_obj_name - dictionary_only = abap_true - EXCEPTIONS - object_not_in_working_area = 1 - execution_error = 2 - cancelled = 3 - insert_into_corr_error = 4 - OTHERS = 5. - IF sy-subrc <> 0. - _raise 'error from RS_WORKING_OBJECT_ACTIVATE'. - ENDIF. - + APPEND INITIAL LINE TO lcl_serialize_common=>gt_ddic ASSIGNING . + -object = is_item-obj_type. + -obj_name = lv_obj_name. WHEN OTHERS. _raise 'activate, unknown type'. ENDCASE. @@ -1367,7 +1348,7 @@ CLASS lcl_serialize_doma IMPLEMENTATION. _raise 'error from DDIF_DOMA_PUT'. ENDIF. - activate( is_item ). + into_working_area( is_item ). ENDMETHOD. "deserialize @@ -1475,7 +1456,7 @@ CLASS lcl_serialize_dtel IMPLEMENTATION. _raise 'error from DDIF_DTEL_PUT'. ENDIF. - activate( is_item ). + into_working_area( is_item ). ENDMETHOD. "deserialize @@ -1882,7 +1863,7 @@ CLASS lcl_serialize_clas IMPLEMENTATION. _raise 'save failure'. ENDTRY. - activate( is_item ). + into_working_area( is_item ). ENDMETHOD. "deserialize @@ -2332,6 +2313,7 @@ CLASS lcl_serialize_prog IMPLEMENTATION. ls_progdir_new-dbapl = ls_progdir-dbapl. ls_progdir_new-rload = ls_progdir-rload. +* todo, use new approach for activating, call method into_working_list() CALL FUNCTION 'UPDATE_PROGDIR' EXPORTING i_progdir = ls_progdir_new @@ -2393,6 +2375,8 @@ CLASS lcl_serialize DEFINITION FINAL. RETURNING value(rv_match) TYPE abap_bool RAISING lcx_exception. + CLASS-METHODS activate RAISING lcx_exception. + ENDCLASS. "lcl_serialize DEFINITION *----------------------------------------------------------------------* @@ -2503,6 +2487,9 @@ CLASS lcl_serialize IMPLEMENTATION. FIELD-SYMBOLS: LIKE LINE OF it_files. + CLEAR lcl_serialize_common=>gt_ddic[]. + CLEAR lcl_serialize_common=>gt_ddic[]. + * todo, sort objects when activating? DOMA first, DTEL, etc. LOOP AT it_files ASSIGNING . SPLIT -filename AT '.' INTO lv_pre lv_type lv_ext. @@ -2548,8 +2535,52 @@ CLASS lcl_serialize IMPLEMENTATION. ENDCASE. ENDLOOP. + activate( ). + ENDMETHOD. "deserialize + METHOD activate. + +* ddic + IF NOT lcl_serialize_common=>gt_ddic[] IS INITIAL. + CALL FUNCTION 'RS_WORKING_OBJECTS_ACTIVATE' + EXPORTING + activate_ddic_objects = abap_true + with_popup = abap_true + TABLES + objects = lcl_serialize_common=>gt_ddic + EXCEPTIONS + excecution_error = 1 + cancelled = 2 + insert_into_corr_error = 3 + execution_error = 4 + OTHERS = 5. + IF sy-subrc <> 0. + _raise 'error from RS_WORKING_OBJECTS_ACTIVATE'. + ENDIF. + ENDIF. + +* programs + IF NOT lcl_serialize_common=>gt_programs[] IS INITIAL. + CALL FUNCTION 'RS_WORKING_OBJECTS_ACTIVATE' + EXPORTING + activate_ddic_objects = abap_false + with_popup = abap_true + TABLES + objects = lcl_serialize_common=>gt_programs + EXCEPTIONS + excecution_error = 1 + cancelled = 2 + insert_into_corr_error = 3 + execution_error = 4 + OTHERS = 5. + IF sy-subrc <> 0. + _raise 'error from RS_WORKING_OBJECTS_ACTIVATE'. + ENDIF. + ENDIF. + + ENDMETHOD. "activate + METHOD compare_files. READ TABLE it_repo WITH KEY path = is_gen-path