lcl_objects_activation to global

lcl_objects_activation to global class
This commit is contained in:
larshp 2018-01-22 16:55:03 +00:00
parent c739ed9d6e
commit c1d01d37e3
27 changed files with 399 additions and 380 deletions

View File

@ -0,0 +1,337 @@
CLASS zcl_abapgit_objects_activation DEFINITION
PUBLIC
CREATE PUBLIC .
PUBLIC SECTION.
CLASS-METHODS add
IMPORTING iv_type TYPE trobjtype
iv_name TYPE clike
iv_delete TYPE abap_bool DEFAULT abap_false
RAISING zcx_abapgit_exception.
CLASS-METHODS add_item
IMPORTING is_item TYPE zif_abapgit_definitions=>ty_item
RAISING zcx_abapgit_exception.
CLASS-METHODS activate
IMPORTING iv_ddic TYPE abap_bool DEFAULT abap_false
RAISING zcx_abapgit_exception.
CLASS-METHODS clear.
PRIVATE SECTION.
CLASS-METHODS fix_class_methods
IMPORTING iv_obj_name TYPE trobj_name
CHANGING ct_objects TYPE dwinactiv_tab.
CLASS-METHODS use_new_activation_logic
RETURNING VALUE(rv_use_new_activation_logic) TYPE abap_bool.
CLASS-METHODS activate_new
IMPORTING iv_ddic TYPE abap_bool DEFAULT abap_false
RAISING zcx_abapgit_exception.
CLASS-METHODS activate_old
IMPORTING iv_ddic TYPE abap_bool DEFAULT abap_false
RAISING zcx_abapgit_exception.
CLASS-METHODS activate_ddic
RAISING zcx_abapgit_exception.
CLASS-METHODS show_activation_errors
IMPORTING iv_logname TYPE ddmass-logname
RAISING zcx_abapgit_exception.
CLASS-DATA: gt_objects TYPE TABLE OF dwinactiv.
ENDCLASS.
CLASS ZCL_ABAPGIT_OBJECTS_ACTIVATION IMPLEMENTATION.
METHOD activate.
IF use_new_activation_logic( ) = abap_true.
activate_new( iv_ddic ).
ELSE.
activate_old( iv_ddic ).
ENDIF.
ENDMETHOD. "activate
METHOD activate_ddic.
DATA: lt_gentab TYPE STANDARD TABLE OF dcgentb,
ls_gentab LIKE LINE OF lt_gentab,
lv_rc TYPE sy-subrc,
lt_deltab TYPE STANDARD TABLE OF dcdeltb,
lt_action_tab TYPE STANDARD TABLE OF dctablres,
lv_logname TYPE ddmass-logname.
FIELD-SYMBOLS: <ls_object> LIKE LINE OF gt_objects.
LOOP AT gt_objects ASSIGNING <ls_object>.
ls_gentab-name = <ls_object>-obj_name.
ls_gentab-type = <ls_object>-object.
INSERT ls_gentab INTO TABLE lt_gentab.
ENDLOOP.
IF lt_gentab IS NOT INITIAL.
lv_logname = |ABAPGIT_{ sy-datum }_{ sy-uzeit }|.
CALL FUNCTION 'DD_MASS_ACT_C3'
EXPORTING
ddmode = 'C'
medium = 'T'
device = 'T'
logname = lv_logname
write_log = abap_true
log_head_tail = abap_true
t_on = space
prid = 1
IMPORTING
act_rc = lv_rc
TABLES
gentab = lt_gentab
deltab = lt_deltab
cnvtab = lt_action_tab
EXCEPTIONS
access_failure = 1
no_objects = 2
locked = 3
internal_error = 4
OTHERS = 5.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( 'error from DD_MASS_ACT_C3' ).
ENDIF.
IF lv_rc > 0.
show_activation_errors( lv_logname ).
ENDIF.
ENDIF.
ENDMETHOD.
METHOD activate_new.
DATA: lo_progress TYPE REF TO zcl_abapgit_progress.
IF gt_objects IS INITIAL.
RETURN.
ENDIF.
CREATE OBJECT lo_progress
EXPORTING
iv_total = 100.
IF iv_ddic = abap_true.
lo_progress->show( iv_current = 98
iv_text = 'Activating DDIC' ).
activate_ddic( ).
ELSE.
lo_progress->show( iv_current = 98
iv_text = 'Activating non DDIC' ).
activate_old( ).
ENDIF.
ENDMETHOD.
METHOD activate_old.
IF gt_objects IS NOT INITIAL.
CALL FUNCTION 'RS_WORKING_OBJECTS_ACTIVATE'
EXPORTING
activate_ddic_objects = iv_ddic
with_popup = abap_true
TABLES
objects = gt_objects
EXCEPTIONS
excecution_error = 1
cancelled = 2
insert_into_corr_error = 3
OTHERS = 4.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( 'error from RS_WORKING_OBJECTS_ACTIVATE' ).
ENDIF.
ENDIF.
ENDMETHOD.
METHOD add.
* 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: <ls_object> LIKE LINE OF lt_objects.
lv_obj_name = iv_name.
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
object = iv_type
TABLES
inactive_objects = lt_objects
EXCEPTIONS
object_not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( 'Error from RS_INACTIVE_OBJECTS_IN_OBJECT' ).
ENDIF.
IF iv_type = 'CLAS'.
fix_class_methods( EXPORTING iv_obj_name = lv_obj_name
CHANGING ct_objects = lt_objects ).
ENDIF.
LOOP AT lt_objects ASSIGNING <ls_object>.
<ls_object>-delet_flag = iv_delete.
ENDLOOP.
APPEND LINES OF lt_objects TO gt_objects.
WHEN OTHERS.
APPEND INITIAL LINE TO gt_objects ASSIGNING <ls_object>.
<ls_object>-object = iv_type.
<ls_object>-obj_name = lv_obj_name.
<ls_object>-delet_flag = iv_delete.
ENDCASE.
ENDMETHOD. "activate
METHOD add_item.
add( iv_type = is_item-obj_type
iv_name = is_item-obj_name ).
ENDMETHOD. "add_item
METHOD clear.
CLEAR gt_objects.
ENDMETHOD. "clear
METHOD fix_class_methods.
* function module RS_WORKING_OBJECTS_ACTIVATE assumes that
* METH lines contains spaces between class and method name
* however, classes named with 30 characters
* eg. ZCL_CLAS_TESTTESTTESTTESTTESTT
* this will not be true, so find all the method includes instead
DATA: lt_methods TYPE seop_methods_w_include,
lv_class TYPE seoclsname.
FIELD-SYMBOLS: <ls_method> LIKE LINE OF lt_methods,
<ls_object> LIKE LINE OF ct_objects.
lv_class = iv_obj_name.
cl_oo_classname_service=>get_all_method_includes(
EXPORTING
clsname = lv_class
RECEIVING
result = lt_methods
EXCEPTIONS
class_not_existing = 1
OTHERS = 2 ).
ASSERT sy-subrc = 0.
DELETE ct_objects WHERE object = 'METH'.
LOOP AT lt_methods ASSIGNING <ls_method>.
APPEND INITIAL LINE TO ct_objects ASSIGNING <ls_object>.
<ls_object>-object = 'METH'.
<ls_object>-obj_name = <ls_method>-incname.
ENDLOOP.
ENDMETHOD.
METHOD show_activation_errors.
DATA: lt_lines TYPE STANDARD TABLE OF trlog,
lv_logname_db TYPE ddprh-protname,
lo_log TYPE REF TO zcl_abapgit_log.
FIELD-SYMBOLS: <ls_line> LIKE LINE OF lt_lines.
lv_logname_db = iv_logname.
CALL FUNCTION 'TR_READ_LOG'
EXPORTING
iv_log_type = 'DB'
iv_logname_db = lv_logname_db
TABLES
et_lines = lt_lines
EXCEPTIONS
invalid_input = 1
access_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( 'error from TR_READ_LOG' ).
ENDIF.
DELETE lt_lines WHERE severity <> 'E'.
CREATE OBJECT lo_log.
LOOP AT lt_lines ASSIGNING <ls_line>.
lo_log->add( <ls_line>-line ).
ENDLOOP.
lo_log->show( ).
ENDMETHOD.
METHOD use_new_activation_logic.
IF zcl_abapgit_persist_settings=>get_instance( )->read( )->get_experimental_features( ) = abap_true.
CALL FUNCTION 'FUNCTION_EXISTS'
EXPORTING
funcname = 'DD_MASS_ACT_C3' " Name of Function Module
EXCEPTIONS
function_not_exist = 1
OTHERS = 2.
IF sy-subrc = 0.
rv_use_new_activation_logic = abap_true.
ENDIF.
ENDIF.
ENDMETHOD.
ENDCLASS.

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOCLASS>
<CLSNAME>ZCL_ABAPGIT_OBJECTS_ACTIVATION</CLSNAME>
<VERSION>1</VERSION>
<LANGU>E</LANGU>
<DESCRIPT>Activation</DESCRIPT>
<EXPOSURE>2</EXPOSURE>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -479,8 +479,8 @@ CLASS lcl_oo_class IMPLEMENTATION.
zcx_abapgit_exception=>raise( 'error from INSERT TEXTPOOL' ).
ENDIF.
lcl_objects_activation=>add( iv_type = 'REPT'
iv_name = lv_cp ).
zcl_abapgit_objects_activation=>add( iv_type = 'REPT'
iv_name = lv_cp ).
ENDMETHOD.
METHOD lif_oo_object_fnc~create_sotr.

View File

@ -178,7 +178,7 @@ CLASS lcl_object_dcls IMPLEMENTATION.
zcx_abapgit_exception=>raise( 'DCLS error' ).
ENDTRY.
lcl_objects_activation=>add_item( ms_item ).
zcl_abapgit_objects_activation=>add_item( ms_item ).
ENDMETHOD.

View File

@ -235,7 +235,7 @@ CLASS lcl_object_ddls IMPLEMENTATION.
zcx_abapgit_exception=>raise( 'DDLS error writing TADIR' ).
ENDTRY.
lcl_objects_activation=>add_item( ms_item ).
zcl_abapgit_objects_activation=>add_item( ms_item ).
ENDMETHOD. "deserialize

View File

@ -224,7 +224,7 @@ CLASS lcl_object_doma IMPLEMENTATION.
is_dd01v = ls_dd01v
it_dd07v = lt_dd07v ).
lcl_objects_activation=>add_item( ms_item ).
zcl_abapgit_objects_activation=>add_item( ms_item ).
ENDMETHOD. "deserialize

View File

@ -225,7 +225,7 @@ CLASS lcl_object_dtel IMPLEMENTATION.
deserialize_texts( io_xml = io_xml
is_dd04v = ls_dd04v ).
lcl_objects_activation=>add_item( ms_item ).
zcl_abapgit_objects_activation=>add_item( ms_item ).
ENDMETHOD. "deserialize

View File

@ -1272,7 +1272,7 @@ CLASS lcl_object_enho IMPLEMENTATION.
li_enho->deserialize( io_xml = io_xml
iv_package = iv_package ).
lcl_objects_activation=>add_item( ms_item ).
zcl_abapgit_objects_activation=>add_item( ms_item ).
ENDMETHOD. "deserialize

View File

@ -181,7 +181,7 @@ CLASS lcl_object_enqu IMPLEMENTATION.
zcx_abapgit_exception=>raise( 'error from DDIF_ENQU_PUT' ).
ENDIF.
lcl_objects_activation=>add_item( ms_item ).
zcl_abapgit_objects_activation=>add_item( ms_item ).
ENDMETHOD. "deserialize

View File

@ -145,7 +145,7 @@ CLASS lcl_object_jobd IMPLEMENTATION.
zcx_abapgit_exception=>raise( |Error deserializing JOBD| ).
ENDTRY.
lcl_objects_activation=>add_item( ms_item ).
zcl_abapgit_objects_activation=>add_item( ms_item ).
ENDMETHOD.

View File

@ -529,7 +529,7 @@ CLASS lcl_oo_base IMPLEMENTATION.
ENDMETHOD.
METHOD lif_oo_object_fnc~add_to_activation_list.
lcl_objects_activation=>add_item( is_item ).
zcl_abapgit_objects_activation=>add_item( is_item ).
ENDMETHOD.
METHOD lif_oo_object_fnc~update_descriptions.

View File

@ -213,7 +213,7 @@ CLASS lcl_object_sfbf IMPLEMENTATION.
lo_bf->save_all( ).
SET PARAMETER ID 'EUK' FIELD ''.
lcl_objects_activation=>add_item( ms_item ).
zcl_abapgit_objects_activation=>add_item( ms_item ).
ENDMETHOD. "deserialize

View File

@ -187,7 +187,7 @@ CLASS lcl_object_sfbs IMPLEMENTATION.
lo_bfs->save_all( ).
SET PARAMETER ID 'EUK' FIELD ''.
lcl_objects_activation=>add_item( ms_item ).
zcl_abapgit_objects_activation=>add_item( ms_item ).
ENDMETHOD. "deserialize

View File

@ -217,7 +217,7 @@ CLASS lcl_object_sfpf IMPLEMENTATION.
zcx_abapgit_exception=>raise( 'SFPF error, deserialize' ).
ENDTRY.
lcl_objects_activation=>add_item( ms_item ).
zcl_abapgit_objects_activation=>add_item( ms_item ).
ENDMETHOD. "deserialize

View File

@ -163,7 +163,7 @@ CLASS lcl_object_sfpi IMPLEMENTATION.
zcx_abapgit_exception=>raise( 'SFPI error, deserialize' ).
ENDTRY.
lcl_objects_activation=>add_item( ms_item ).
zcl_abapgit_objects_activation=>add_item( ms_item ).
ENDMETHOD. "deserialize

View File

@ -181,8 +181,7 @@ CLASS lcl_object_sfsw IMPLEMENTATION.
zcx_abapgit_exception=>raise( 'error in CL_SFW_SW->SAVE_ALL' ).
ENDIF.
lcl_objects_activation=>add_item( ms_item ).
zcl_abapgit_objects_activation=>add_item( ms_item ).
ENDMETHOD. "deserialize

View File

@ -202,7 +202,7 @@ CLASS lcl_object_shlp IMPLEMENTATION.
zcx_abapgit_exception=>raise( 'error from DDIF_SHLP_PUT' ).
ENDIF.
lcl_objects_activation=>add_item( ms_item ).
zcl_abapgit_objects_activation=>add_item( ms_item ).
ENDMETHOD. "deserialize

View File

@ -410,7 +410,7 @@ CLASS lcl_object_tabl IMPLEMENTATION.
zcx_abapgit_exception=>raise( 'error from DDIF_TABL_PUT' ).
ENDIF.
lcl_objects_activation=>add_item( ms_item ).
zcl_abapgit_objects_activation=>add_item( ms_item ).
* handle indexes
LOOP AT lt_dd12v INTO ls_dd12v.
@ -449,8 +449,8 @@ CLASS lcl_object_tabl IMPLEMENTATION.
IMPORTING
obj_name = lv_tname.
lcl_objects_activation=>add( iv_type = 'INDX'
iv_name = lv_tname ).
zcl_abapgit_objects_activation=>add( iv_type = 'INDX'
iv_name = lv_tname ).
ENDLOOP.

View File

@ -181,7 +181,7 @@ CLASS lcl_object_ttyp IMPLEMENTATION.
zcx_abapgit_exception=>raise( 'error from DDIF_TTYP_PUT' ).
ENDIF.
lcl_objects_activation=>add_item( ms_item ).
zcl_abapgit_objects_activation=>add_item( ms_item ).
ENDMETHOD. "deserialize

View File

@ -177,7 +177,7 @@ CLASS lcl_object_type IMPLEMENTATION.
INSERT REPORT lv_progname FROM lt_source STATE 'I'.
ENDIF.
lcl_objects_activation=>add_item( ms_item ).
zcl_abapgit_objects_activation=>add_item( ms_item ).
ENDMETHOD. "deserialize

View File

@ -267,7 +267,7 @@ CLASS lcl_object_view IMPLEMENTATION.
zcx_abapgit_exception=>raise( 'error from DDIF_VIEW_PUT' ).
ENDIF.
lcl_objects_activation=>add_item( ms_item ).
zcl_abapgit_objects_activation=>add_item( ms_item ).
ENDMETHOD. "deserialize

View File

@ -263,7 +263,7 @@ CLASS lcl_object_wapa IMPLEMENTATION.
ls_item-obj_type = 'WAPD'.
ls_item-obj_name = ms_item-obj_name.
lcl_objects_activation=>add_item( ls_item ).
zcl_abapgit_objects_activation=>add_item( ls_item ).
lv_objkey = ls_item-obj_name.
* todo, hmm, the WAPD is not added to the worklist during activation
@ -298,8 +298,8 @@ CLASS lcl_object_wapa IMPLEMENTATION.
p_key_component2 = <ls_page>-attributes-pagekey
p_external_id = 'WG ' ).
lcl_objects_activation=>add( iv_type = 'WAPP'
iv_name = lv_obj_name ).
zcl_abapgit_objects_activation=>add( iv_type = 'WAPP'
iv_name = lv_obj_name ).
ENDLOOP.

View File

@ -770,7 +770,7 @@ CLASS lcl_object_wdyn IMPLEMENTATION.
recover_view( <ls_view> ).
ENDLOOP.
lcl_objects_activation=>add_item( ms_item ).
zcl_abapgit_objects_activation=>add_item( ms_item ).
ENDMETHOD. "deserialize

View File

@ -409,7 +409,7 @@ CLASS lcl_object_webi IMPLEMENTATION.
zcx_abapgit_exception=>raise( 'error deserializing WEBI' ).
ENDTRY.
lcl_objects_activation=>add_item( ms_item ).
zcl_abapgit_objects_activation=>add_item( ms_item ).
ENDMETHOD. "zif_abapgit_object~deserialize

View File

@ -135,7 +135,7 @@ CLASS lcl_object_xslt IMPLEMENTATION.
lo_xslt->set_changeable( abap_false ).
lcl_objects_activation=>add_item( ms_item ).
zcl_abapgit_objects_activation=>add_item( ms_item ).
ENDMETHOD. "zif_abapgit_object~deserialize

View File

@ -2,345 +2,6 @@
*& Include ZABAPGIT_OBJECTS
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
* CLASS lcl_objects_activation DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_objects_activation DEFINITION FINAL.
PUBLIC SECTION.
CLASS-METHODS add
IMPORTING iv_type TYPE trobjtype
iv_name TYPE clike
iv_delete TYPE abap_bool DEFAULT abap_false
RAISING zcx_abapgit_exception.
CLASS-METHODS add_item
IMPORTING is_item TYPE zif_abapgit_definitions=>ty_item
RAISING zcx_abapgit_exception.
CLASS-METHODS activate
IMPORTING iv_ddic TYPE abap_bool DEFAULT abap_false
RAISING zcx_abapgit_exception.
CLASS-METHODS clear.
PRIVATE SECTION.
CLASS-METHODS fix_class_methods
IMPORTING iv_obj_name TYPE trobj_name
CHANGING ct_objects TYPE dwinactiv_tab.
CLASS-METHODS use_new_activation_logic
RETURNING VALUE(rv_use_new_activation_logic) TYPE abap_bool.
CLASS-METHODS activate_new
IMPORTING iv_ddic TYPE abap_bool DEFAULT abap_false
RAISING zcx_abapgit_exception.
CLASS-METHODS activate_old
IMPORTING iv_ddic TYPE abap_bool DEFAULT abap_false
RAISING zcx_abapgit_exception.
CLASS-METHODS activate_ddic
RAISING zcx_abapgit_exception.
CLASS-METHODS show_activation_errors
IMPORTING iv_logname TYPE ddmass-logname
RAISING zcx_abapgit_exception.
CLASS-DATA: gt_objects TYPE TABLE OF dwinactiv.
ENDCLASS. "lcl_objects_activation DEFINITION
*----------------------------------------------------------------------*
* CLASS lcl_objects_activation IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_objects_activation IMPLEMENTATION.
METHOD add_item.
add( iv_type = is_item-obj_type
iv_name = is_item-obj_name ).
ENDMETHOD. "add_item
METHOD clear.
CLEAR gt_objects.
ENDMETHOD. "clear
METHOD activate.
IF use_new_activation_logic( ) = abap_true.
activate_new( iv_ddic ).
ELSE.
activate_old( iv_ddic ).
ENDIF.
ENDMETHOD. "activate
METHOD fix_class_methods.
* function module RS_WORKING_OBJECTS_ACTIVATE assumes that
* METH lines contains spaces between class and method name
* however, classes named with 30 characters
* eg. ZCL_CLAS_TESTTESTTESTTESTTESTT
* this will not be true, so find all the method includes instead
DATA: lt_methods TYPE seop_methods_w_include,
lv_class TYPE seoclsname.
FIELD-SYMBOLS: <ls_method> LIKE LINE OF lt_methods,
<ls_object> LIKE LINE OF ct_objects.
lv_class = iv_obj_name.
cl_oo_classname_service=>get_all_method_includes(
EXPORTING
clsname = lv_class
RECEIVING
result = lt_methods
EXCEPTIONS
class_not_existing = 1
OTHERS = 2 ).
ASSERT sy-subrc = 0.
DELETE ct_objects WHERE object = 'METH'.
LOOP AT lt_methods ASSIGNING <ls_method>.
APPEND INITIAL LINE TO ct_objects ASSIGNING <ls_object>.
<ls_object>-object = 'METH'.
<ls_object>-obj_name = <ls_method>-incname.
ENDLOOP.
ENDMETHOD.
METHOD add.
* 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: <ls_object> LIKE LINE OF lt_objects.
lv_obj_name = iv_name.
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
object = iv_type
TABLES
inactive_objects = lt_objects
EXCEPTIONS
object_not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( 'Error from RS_INACTIVE_OBJECTS_IN_OBJECT' ).
ENDIF.
IF iv_type = 'CLAS'.
fix_class_methods( EXPORTING iv_obj_name = lv_obj_name
CHANGING ct_objects = lt_objects ).
ENDIF.
LOOP AT lt_objects ASSIGNING <ls_object>.
<ls_object>-delet_flag = iv_delete.
ENDLOOP.
APPEND LINES OF lt_objects TO gt_objects.
WHEN OTHERS.
APPEND INITIAL LINE TO gt_objects ASSIGNING <ls_object>.
<ls_object>-object = iv_type.
<ls_object>-obj_name = lv_obj_name.
<ls_object>-delet_flag = iv_delete.
ENDCASE.
ENDMETHOD. "activate
METHOD use_new_activation_logic.
IF zcl_abapgit_persist_settings=>get_instance( )->read( )->get_experimental_features( ) = abap_true.
CALL FUNCTION 'FUNCTION_EXISTS'
EXPORTING
funcname = 'DD_MASS_ACT_C3' " Name of Function Module
EXCEPTIONS
function_not_exist = 1
OTHERS = 2.
IF sy-subrc = 0.
rv_use_new_activation_logic = abap_true.
ENDIF.
ENDIF.
ENDMETHOD.
METHOD activate_new.
DATA: lo_progress TYPE REF TO zcl_abapgit_progress.
IF gt_objects IS INITIAL.
RETURN.
ENDIF.
CREATE OBJECT lo_progress
EXPORTING
iv_total = 100.
IF iv_ddic = abap_true.
lo_progress->show( iv_current = 98
iv_text = 'Activating DDIC' ).
activate_ddic( ).
ELSE.
lo_progress->show( iv_current = 98
iv_text = 'Activating non DDIC' ).
activate_old( ).
ENDIF.
ENDMETHOD.
METHOD activate_old.
IF gt_objects IS NOT INITIAL.
CALL FUNCTION 'RS_WORKING_OBJECTS_ACTIVATE'
EXPORTING
activate_ddic_objects = iv_ddic
with_popup = abap_true
TABLES
objects = gt_objects
EXCEPTIONS
excecution_error = 1
cancelled = 2
insert_into_corr_error = 3
OTHERS = 4.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( 'error from RS_WORKING_OBJECTS_ACTIVATE' ).
ENDIF.
ENDIF.
ENDMETHOD.
METHOD activate_ddic.
DATA: lt_gentab TYPE STANDARD TABLE OF dcgentb,
ls_gentab LIKE LINE OF lt_gentab,
lv_rc TYPE sy-subrc,
lt_deltab TYPE STANDARD TABLE OF dcdeltb,
lt_action_tab TYPE STANDARD TABLE OF dctablres,
lv_logname TYPE ddmass-logname.
FIELD-SYMBOLS: <ls_object> LIKE LINE OF gt_objects.
LOOP AT gt_objects ASSIGNING <ls_object>.
ls_gentab-name = <ls_object>-obj_name.
ls_gentab-type = <ls_object>-object.
INSERT ls_gentab INTO TABLE lt_gentab.
ENDLOOP.
IF lt_gentab IS NOT INITIAL.
lv_logname = |ABAPGIT_{ sy-datum }_{ sy-uzeit }|.
CALL FUNCTION 'DD_MASS_ACT_C3'
EXPORTING
ddmode = 'C'
medium = 'T'
device = 'T'
logname = lv_logname
write_log = abap_true
log_head_tail = abap_true
t_on = space
prid = 1
IMPORTING
act_rc = lv_rc
TABLES
gentab = lt_gentab
deltab = lt_deltab
cnvtab = lt_action_tab
EXCEPTIONS
access_failure = 1
no_objects = 2
locked = 3
internal_error = 4
OTHERS = 5.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( 'error from DD_MASS_ACT_C3' ).
ENDIF.
IF lv_rc > 0.
show_activation_errors( lv_logname ).
ENDIF.
ENDIF.
ENDMETHOD.
METHOD show_activation_errors.
DATA: lt_lines TYPE STANDARD TABLE OF trlog,
lv_logname_db TYPE ddprh-protname,
lo_log TYPE REF TO zcl_abapgit_log.
FIELD-SYMBOLS: <ls_line> LIKE LINE OF lt_lines.
lv_logname_db = iv_logname.
CALL FUNCTION 'TR_READ_LOG'
EXPORTING
iv_log_type = 'DB'
iv_logname_db = lv_logname_db
TABLES
et_lines = lt_lines
EXCEPTIONS
invalid_input = 1
access_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( 'error from TR_READ_LOG' ).
ENDIF.
DELETE lt_lines WHERE severity <> 'E'.
CREATE OBJECT lo_log.
LOOP AT lt_lines ASSIGNING <ls_line>.
lo_log->add( <ls_line>-line ).
ENDLOOP.
lo_log->show( ).
ENDMETHOD.
ENDCLASS. "lcl_objects_activation IMPLEMENTATION
"Null Object Pattern
CLASS lcl_comparison_null DEFINITION FINAL.
PUBLIC SECTION.
@ -1039,8 +700,9 @@ CLASS lcl_objects_program IMPLEMENTATION.
AND state = ls_progdir_new-state. "#EC CI_SUBRC
ENDIF.
lcl_objects_activation=>add( iv_type = 'REPS'
iv_name = is_progdir-name ).
zcl_abapgit_objects_activation=>add(
iv_type = 'REPS'
iv_name = is_progdir-name ).
ENDMETHOD. "deserialize_program
@ -1217,8 +879,9 @@ CLASS lcl_objects_program IMPLEMENTATION.
INTO lv_name RESPECTING BLANKS.
ASSERT NOT lv_name IS INITIAL.
lcl_objects_activation=>add( iv_type = 'DYNP'
iv_name = lv_name ).
zcl_abapgit_objects_activation=>add(
iv_type = 'DYNP'
iv_name = lv_name ).
ENDLOOP.
@ -1308,9 +971,10 @@ CLASS lcl_objects_program IMPLEMENTATION.
ENDIF.
IF lv_state = 'I'. "Textpool in master language needs to be activated
lcl_objects_activation=>add( iv_type = 'REPT'
iv_name = iv_program
iv_delete = lv_delete ).
zcl_abapgit_objects_activation=>add(
iv_type = 'REPT'
iv_name = iv_program
iv_delete = lv_delete ).
ENDIF.
ENDMETHOD. "deserialize_textpool
@ -1375,8 +1039,9 @@ CLASS lcl_objects_program IMPLEMENTATION.
zcx_abapgit_exception=>raise( 'error from RS_CUA_INTERNAL_WRITE' ).
ENDIF.
lcl_objects_activation=>add( iv_type = 'CUAD'
iv_name = iv_program_name ).
zcl_abapgit_objects_activation=>add(
iv_type = 'CUAD'
iv_name = iv_program_name ).
ENDMETHOD. "deserialize_cua

View File

@ -447,7 +447,7 @@ CLASS lcl_objects IMPLEMENTATION.
zcl_abapgit_default_task=>get_instance( )->set( lv_package ).
lcl_objects_activation=>clear( ).
zcl_abapgit_objects_activation=>clear( ).
lt_remote = io_repo->get_files_remote( ).
@ -556,7 +556,7 @@ CLASS lcl_objects IMPLEMENTATION.
FIELD-SYMBOLS: <ls_obj> LIKE LINE OF it_objects.
lcl_objects_activation=>clear( ).
zcl_abapgit_objects_activation=>clear( ).
CREATE OBJECT lo_progress
EXPORTING
@ -572,7 +572,7 @@ CLASS lcl_objects IMPLEMENTATION.
APPEND LINES OF <ls_obj>-obj->mo_files->get_accessed_files( ) TO ct_files.
ENDLOOP.
lcl_objects_activation=>activate( iv_ddic ).
zcl_abapgit_objects_activation=>activate( iv_ddic ).
ENDMETHOD.