mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 04:08:27 +08:00
lcl_objects_activation to global
lcl_objects_activation to global class
This commit is contained in:
parent
c739ed9d6e
commit
c1d01d37e3
337
src/objects/zcl_abapgit_objects_activation.clas.abap
Normal file
337
src/objects/zcl_abapgit_objects_activation.clas.abap
Normal 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.
|
18
src/objects/zcl_abapgit_objects_activation.clas.xml
Normal file
18
src/objects/zcl_abapgit_objects_activation.clas.xml
Normal 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>
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user