updates to experimental DDIC activation logic (#2206)

* updates to experimental ddic activation logic

* deleted too much

* special handling for INDX

* fixored, this seems to work
This commit is contained in:
Lars Hvam 2018-12-17 08:17:53 +01:00 committed by GitHub
parent 9ce8a76ae0
commit 35f1462d3a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -17,18 +17,15 @@ CLASS zcl_abapgit_objects_activation DEFINITION PUBLIC CREATE PUBLIC.
CLASS-METHODS clear. CLASS-METHODS clear.
PROTECTED SECTION.
PRIVATE SECTION. PRIVATE SECTION.
CLASS-DATA: CLASS-DATA:
gt_classes TYPE STANDARD TABLE OF seoclsname WITH DEFAULT KEY, gt_classes TYPE STANDARD TABLE OF seoclsname WITH DEFAULT KEY .
gt_objects TYPE TABLE OF dwinactiv. CLASS-DATA:
gt_objects TYPE TABLE OF dwinactiv .
CLASS-METHODS update_where_used . CLASS-METHODS update_where_used .
CLASS-METHODS fix_class_methods
IMPORTING
!iv_obj_name TYPE trobj_name
CHANGING
!ct_objects TYPE dwinactiv_tab .
CLASS-METHODS use_new_activation_logic CLASS-METHODS use_new_activation_logic
RETURNING RETURNING
VALUE(rv_use_new_activation_logic) TYPE abap_bool . VALUE(rv_use_new_activation_logic) TYPE abap_bool .
@ -73,39 +70,29 @@ CLASS ZCL_ABAPGIT_OBJECTS_ACTIVATION IMPLEMENTATION.
METHOD activate_ddic. METHOD activate_ddic.
DATA: lt_gentab TYPE STANDARD TABLE OF dcgentb, DATA: lt_gentab TYPE STANDARD TABLE OF dcgentb,
ls_gentab LIKE LINE OF lt_gentab,
lv_rc TYPE sy-subrc, lv_rc TYPE sy-subrc,
ls_gentab LIKE LINE OF lt_gentab,
lt_deltab TYPE STANDARD TABLE OF dcdeltb, lt_deltab TYPE STANDARD TABLE OF dcdeltb,
lt_action_tab TYPE STANDARD TABLE OF dctablres, lt_action_tab TYPE STANDARD TABLE OF dctablres,
lv_logname TYPE ddmass-logname, lv_logname TYPE ddmass-logname.
lv_errmsg(255) TYPE c.
FIELD-SYMBOLS: <ls_object> LIKE LINE OF gt_objects. FIELD-SYMBOLS: <ls_object> LIKE LINE OF gt_objects.
LOOP AT gt_objects ASSIGNING <ls_object>. LOOP AT gt_objects ASSIGNING <ls_object>.
ls_gentab-tabix = sy-tabix.
ls_gentab-name = <ls_object>-obj_name.
ls_gentab-type = <ls_object>-object. ls_gentab-type = <ls_object>-object.
INSERT ls_gentab INTO TABLE lt_gentab. ls_gentab-name = <ls_object>-obj_name.
IF ls_gentab-type = 'INDX'.
CALL FUNCTION 'RS_CORR_INSERT' CALL FUNCTION 'DD_E071_TO_DD'
EXPORTING EXPORTING
object = <ls_object>-obj_name object = <ls_object>-object
object_class = <ls_object>-object obj_name = <ls_object>-obj_name
global_lock = abap_true IMPORTING
EXCEPTIONS name = ls_gentab-name
cancelled = 1 id = ls_gentab-indx.
permission_failure = 2
unknown_objectclass = 3
OTHERS = 4.
IF sy-subrc <> 0.
CONCATENATE 'error from RS_CORR_INSERT for' <ls_object>-object <ls_object>-obj_name
INTO lv_errmsg SEPARATED BY space.
zcx_abapgit_exception=>raise( lv_errmsg ).
ENDIF. ENDIF.
INSERT ls_gentab INTO TABLE lt_gentab.
ENDLOOP. ENDLOOP.
IF lt_gentab IS NOT INITIAL. IF lt_gentab IS NOT INITIAL.
@ -114,9 +101,10 @@ CLASS ZCL_ABAPGIT_OBJECTS_ACTIVATION IMPLEMENTATION.
CALL FUNCTION 'DD_MASS_ACT_C3' CALL FUNCTION 'DD_MASS_ACT_C3'
EXPORTING EXPORTING
ddmode = 'C' ddmode = 'O'
medium = 'T' medium = 'T' " transport order
device = 'T' device = 'T' " saves to table DDRPH?
version = 'M' " activate newest
logname = lv_logname logname = lv_logname
write_log = abap_true write_log = abap_true
log_head_tail = abap_true log_head_tail = abap_true
@ -140,9 +128,7 @@ CLASS ZCL_ABAPGIT_OBJECTS_ACTIVATION IMPLEMENTATION.
ENDIF. ENDIF.
IF lv_rc > 0. IF lv_rc > 0.
show_activation_errors( lv_logname ). show_activation_errors( lv_logname ).
ENDIF. ENDIF.
ENDIF. ENDIF.
@ -273,43 +259,6 @@ CLASS ZCL_ABAPGIT_OBJECTS_ACTIVATION IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
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
* TODO, this class is obsolete with new CLAS deserialization logic
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. METHOD show_activation_errors.
DATA: lt_lines TYPE STANDARD TABLE OF trlog, DATA: lt_lines TYPE STANDARD TABLE OF trlog,
@ -343,7 +292,9 @@ CLASS ZCL_ABAPGIT_OBJECTS_ACTIVATION IMPLEMENTATION.
lo_log->add( <ls_line>-line ). lo_log->add( <ls_line>-line ).
ENDLOOP. ENDLOOP.
IF lo_log->count( ) > 0.
lo_log->show( ). lo_log->show( ).
ENDIF.
ENDMETHOD. ENDMETHOD.