DDLS, DCLS, DDLX: Improve Error handling

This commit is contained in:
Christian Guenter 2018-09-28 13:53:25 +02:00 committed by Lars Hvam
parent 246b943b87
commit 2a11522598
3 changed files with 70 additions and 50 deletions

View File

@ -23,7 +23,8 @@ CLASS zcl_abapgit_object_dcls IMPLEMENTATION.
METHOD zif_abapgit_object~delete. METHOD zif_abapgit_object~delete.
DATA: lo_dcl TYPE REF TO object. DATA: lo_dcl TYPE REF TO object,
lx_error TYPE REF TO cx_root.
TRY. TRY.
CALL METHOD ('CL_ACM_DCL_HANDLER_FACTORY')=>('CREATE') CALL METHOD ('CL_ACM_DCL_HANDLER_FACTORY')=>('CREATE')
@ -34,8 +35,9 @@ CLASS zcl_abapgit_object_dcls IMPLEMENTATION.
EXPORTING EXPORTING
iv_dclname = ms_item-obj_name. iv_dclname = ms_item-obj_name.
CATCH cx_root. CATCH cx_root INTO lx_error.
zcx_abapgit_exception=>raise( 'DCLS error' ). zcx_abapgit_exception=>raise( iv_text = lx_error->get_text( )
ix_previous = lx_error ).
ENDTRY. ENDTRY.
ENDMETHOD. ENDMETHOD.
@ -43,8 +45,9 @@ CLASS zcl_abapgit_object_dcls IMPLEMENTATION.
METHOD zif_abapgit_object~deserialize. METHOD zif_abapgit_object~deserialize.
DATA: lr_data TYPE REF TO data, DATA: lr_data TYPE REF TO data,
lo_dcl TYPE REF TO object. lo_dcl TYPE REF TO object,
lx_error TYPE REF TO cx_root.
FIELD-SYMBOLS: <lg_data> TYPE any, FIELD-SYMBOLS: <lg_data> TYPE any,
<lg_field> TYPE any. <lg_field> TYPE any.
@ -78,8 +81,9 @@ CLASS zcl_abapgit_object_dcls IMPLEMENTATION.
tadir_insert( iv_package ). tadir_insert( iv_package ).
CATCH cx_root. CATCH cx_root INTO lx_error.
zcx_abapgit_exception=>raise( 'DCLS error' ). zcx_abapgit_exception=>raise( iv_text = lx_error->get_text( )
ix_previous = lx_error ).
ENDTRY. ENDTRY.
zcl_abapgit_objects_activation=>add_item( ms_item ). zcl_abapgit_objects_activation=>add_item( ms_item ).
@ -89,7 +93,8 @@ CLASS zcl_abapgit_object_dcls IMPLEMENTATION.
METHOD zif_abapgit_object~exists. METHOD zif_abapgit_object~exists.
DATA: lo_dcl TYPE REF TO object. DATA: lo_dcl TYPE REF TO object,
lx_error TYPE REF TO cx_root.
TRY. TRY.
CALL METHOD ('CL_ACM_DCL_HANDLER_FACTORY')=>('CREATE') CALL METHOD ('CL_ACM_DCL_HANDLER_FACTORY')=>('CREATE')
@ -102,8 +107,9 @@ CLASS zcl_abapgit_object_dcls IMPLEMENTATION.
RECEIVING RECEIVING
rv_exists = rv_bool. rv_exists = rv_bool.
CATCH cx_root. CATCH cx_root INTO lx_error.
rv_bool = abap_false. zcx_abapgit_exception=>raise( iv_text = lx_error->get_text( )
ix_previous = lx_error ).
ENDTRY. ENDTRY.
ENDMETHOD. ENDMETHOD.
@ -138,8 +144,9 @@ CLASS zcl_abapgit_object_dcls IMPLEMENTATION.
METHOD zif_abapgit_object~serialize. METHOD zif_abapgit_object~serialize.
DATA: lr_data TYPE REF TO data, DATA: lr_data TYPE REF TO data,
lo_dcl TYPE REF TO object. lo_dcl TYPE REF TO object,
lx_error TYPE REF TO cx_root.
FIELD-SYMBOLS: <lg_data> TYPE any, FIELD-SYMBOLS: <lg_data> TYPE any,
<lg_field> TYPE any. <lg_field> TYPE any.
@ -189,8 +196,9 @@ CLASS zcl_abapgit_object_dcls IMPLEMENTATION.
io_xml->add( iv_name = 'DCLS' io_xml->add( iv_name = 'DCLS'
ig_data = <lg_data> ). ig_data = <lg_data> ).
CATCH cx_root. CATCH cx_root INTO lx_error.
zcx_abapgit_exception=>raise( 'DCLS error' ). zcx_abapgit_exception=>raise( iv_text = lx_error->get_text( )
ix_previous = lx_error ).
ENDTRY. ENDTRY.
ENDMETHOD. ENDMETHOD.

View File

@ -13,13 +13,14 @@ ENDCLASS.
CLASS ZCL_ABAPGIT_OBJECT_DDLS IMPLEMENTATION. CLASS zcl_abapgit_object_ddls IMPLEMENTATION.
METHOD open_adt_stob. METHOD open_adt_stob.
DATA: lr_data TYPE REF TO data. DATA: lr_data TYPE REF TO data,
DATA: lo_ddl TYPE REF TO object. lo_ddl TYPE REF TO object,
lx_error TYPE REF TO cx_root.
FIELD-SYMBOLS: <lt_ddnames> TYPE STANDARD TABLE. FIELD-SYMBOLS: <lt_ddnames> TYPE STANDARD TABLE.
FIELD-SYMBOLS: <lt_entity_view> TYPE STANDARD TABLE. FIELD-SYMBOLS: <lt_entity_view> TYPE STANDARD TABLE.
@ -66,8 +67,9 @@ CLASS ZCL_ABAPGIT_OBJECT_DDLS IMPLEMENTATION.
ENDIF. ENDIF.
CATCH cx_root. CATCH cx_root INTO lx_error.
zcx_abapgit_exception=>raise( 'DDLS Jump Error' ). zcx_abapgit_exception=>raise( iv_text = lx_error->get_text( )
ix_previous = lx_error ).
ENDTRY. ENDTRY.
ENDMETHOD. ENDMETHOD.
@ -76,7 +78,8 @@ CLASS ZCL_ABAPGIT_OBJECT_DDLS IMPLEMENTATION.
METHOD zif_abapgit_object~changed_by. METHOD zif_abapgit_object~changed_by.
DATA: lo_ddl TYPE REF TO object, DATA: lo_ddl TYPE REF TO object,
lr_data TYPE REF TO data. lr_data TYPE REF TO data,
lx_error TYPE REF TO cx_root.
FIELD-SYMBOLS: <lg_data> TYPE any, FIELD-SYMBOLS: <lg_data> TYPE any,
<lg_field> TYPE any. <lg_field> TYPE any.
@ -102,7 +105,9 @@ CLASS ZCL_ABAPGIT_OBJECT_DDLS IMPLEMENTATION.
IF sy-subrc = 0. IF sy-subrc = 0.
rv_user = <lg_field>. rv_user = <lg_field>.
ENDIF. ENDIF.
CATCH cx_root. CATCH cx_root INTO lx_error.
zcx_abapgit_exception=>raise( iv_text = lx_error->get_text( )
ix_previous = lx_error ).
ENDTRY. ENDTRY.
IF rv_user IS INITIAL. IF rv_user IS INITIAL.
@ -119,7 +124,8 @@ CLASS ZCL_ABAPGIT_OBJECT_DDLS IMPLEMENTATION.
METHOD zif_abapgit_object~delete. METHOD zif_abapgit_object~delete.
DATA: lo_ddl TYPE REF TO object. DATA: lo_ddl TYPE REF TO object,
lx_error TYPE REF TO cx_root.
CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE') CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE')
@ -130,8 +136,9 @@ CLASS ZCL_ABAPGIT_OBJECT_DDLS IMPLEMENTATION.
CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~DELETE') CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~DELETE')
EXPORTING EXPORTING
name = ms_item-obj_name. name = ms_item-obj_name.
CATCH cx_root. CATCH cx_root INTO lx_error.
zcx_abapgit_exception=>raise( 'DDLS error deleting' ). zcx_abapgit_exception=>raise( iv_text = lx_error->get_text( )
ix_previous = lx_error ).
ENDTRY. ENDTRY.
ENDMETHOD. ENDMETHOD.
@ -139,8 +146,9 @@ CLASS ZCL_ABAPGIT_OBJECT_DDLS IMPLEMENTATION.
METHOD zif_abapgit_object~deserialize. METHOD zif_abapgit_object~deserialize.
DATA: lo_ddl TYPE REF TO object, DATA: lo_ddl TYPE REF TO object,
lr_data TYPE REF TO data. lr_data TYPE REF TO data,
lx_error TYPE REF TO cx_root.
FIELD-SYMBOLS: <lg_data> TYPE any, FIELD-SYMBOLS: <lg_data> TYPE any,
<lg_field> TYPE any. <lg_field> TYPE any.
@ -172,8 +180,10 @@ CLASS ZCL_ABAPGIT_OBJECT_DDLS IMPLEMENTATION.
objectname = ms_item-obj_name objectname = ms_item-obj_name
devclass = iv_package devclass = iv_package
prid = 0. prid = 0.
CATCH cx_root.
zcx_abapgit_exception=>raise( 'DDLS error writing TADIR' ). CATCH cx_root INTO lx_error.
zcx_abapgit_exception=>raise( iv_text = lx_error->get_text( )
ix_previous = lx_error ).
ENDTRY. ENDTRY.
zcl_abapgit_objects_activation=>add_item( ms_item ). zcl_abapgit_objects_activation=>add_item( ms_item ).
@ -250,7 +260,8 @@ CLASS ZCL_ABAPGIT_OBJECT_DDLS IMPLEMENTATION.
DATA: lo_ddl TYPE REF TO object, DATA: lo_ddl TYPE REF TO object,
lr_data TYPE REF TO data, lr_data TYPE REF TO data,
lt_clr_comps TYPE STANDARD TABLE OF fieldname WITH DEFAULT KEY. lt_clr_comps TYPE STANDARD TABLE OF fieldname WITH DEFAULT KEY,
lx_error TYPE REF TO cx_root.
FIELD-SYMBOLS: <lg_data> TYPE any, FIELD-SYMBOLS: <lg_data> TYPE any,
<lg_field> TYPE any, <lg_field> TYPE any,
@ -271,8 +282,9 @@ CLASS ZCL_ABAPGIT_OBJECT_DDLS IMPLEMENTATION.
get_state = 'A' get_state = 'A'
IMPORTING IMPORTING
ddddlsrcv_wa = <lg_data>. ddddlsrcv_wa = <lg_data>.
CATCH cx_root. CATCH cx_root INTO lx_error.
zcx_abapgit_exception=>raise( 'DDLS error reading' ). zcx_abapgit_exception=>raise( iv_text = lx_error->get_text( )
ix_previous = lx_error ).
ENDTRY. ENDTRY.
APPEND 'AS4USER' TO lt_clr_comps. APPEND 'AS4USER' TO lt_clr_comps.

View File

@ -80,6 +80,8 @@ CLASS zcl_abapgit_object_ddlx IMPLEMENTATION.
METHOD get_persistence. METHOD get_persistence.
DATA: lx_error TYPE REF TO cx_root.
TRY. TRY.
IF mo_persistence IS NOT BOUND. IF mo_persistence IS NOT BOUND.
@ -88,8 +90,9 @@ CLASS zcl_abapgit_object_ddlx IMPLEMENTATION.
ENDIF. ENDIF.
CATCH cx_root. CATCH cx_root INTO lx_error.
zcx_abapgit_exception=>raise( `DDLX not supported` ). zcx_abapgit_exception=>raise( iv_text = lx_error->get_text( )
ix_previous = lx_error ).
ENDTRY. ENDTRY.
ri_persistence = mo_persistence. ri_persistence = mo_persistence.
@ -111,7 +114,6 @@ CLASS zcl_abapgit_object_ddlx IMPLEMENTATION.
DATA: lv_object_key TYPE seu_objkey, DATA: lv_object_key TYPE seu_objkey,
li_data_model TYPE REF TO if_wb_object_data_model, li_data_model TYPE REF TO if_wb_object_data_model,
lv_text TYPE string,
lx_error TYPE REF TO cx_root. lx_error TYPE REF TO cx_root.
@ -124,8 +126,8 @@ CLASS zcl_abapgit_object_ddlx IMPLEMENTATION.
p_version = swbm_version_active ). p_version = swbm_version_active ).
CATCH cx_root INTO lx_error. CATCH cx_root INTO lx_error.
lv_text = lx_error->get_text( ). zcx_abapgit_exception=>raise( iv_text = lx_error->get_text( )
zcx_abapgit_exception=>raise( lv_text ). ix_previous = lx_error ).
ENDTRY. ENDTRY.
ENDMETHOD. ENDMETHOD.
@ -135,7 +137,6 @@ CLASS zcl_abapgit_object_ddlx IMPLEMENTATION.
DATA: li_data_model TYPE REF TO if_wb_object_data_model, DATA: li_data_model TYPE REF TO if_wb_object_data_model,
lr_data TYPE REF TO data, lr_data TYPE REF TO data,
lv_text TYPE string,
lx_error TYPE REF TO cx_root. lx_error TYPE REF TO cx_root.
FIELD-SYMBOLS: <lg_data> TYPE any, FIELD-SYMBOLS: <lg_data> TYPE any,
@ -170,8 +171,8 @@ CLASS zcl_abapgit_object_ddlx IMPLEMENTATION.
get_persistence( )->save( li_data_model ). get_persistence( )->save( li_data_model ).
CATCH cx_root INTO lx_error. CATCH cx_root INTO lx_error.
lv_text = lx_error->get_text( ). zcx_abapgit_exception=>raise( iv_text = lx_error->get_text( )
zcx_abapgit_exception=>raise( lv_text ). ix_previous = lx_error ).
ENDTRY. ENDTRY.
ENDMETHOD. ENDMETHOD.
@ -208,6 +209,14 @@ CLASS zcl_abapgit_object_ddlx IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~is_locked.
rv_is_locked = exists_a_lock_entry_for( iv_lock_object = 'ESDICT'
iv_argument = |{ ms_item-obj_type }{ ms_item-obj_name }| ).
ENDMETHOD.
METHOD zif_abapgit_object~jump. METHOD zif_abapgit_object~jump.
TRY. TRY.
@ -227,7 +236,6 @@ CLASS zcl_abapgit_object_ddlx IMPLEMENTATION.
li_data_model TYPE REF TO if_wb_object_data_model, li_data_model TYPE REF TO if_wb_object_data_model,
li_persistence TYPE REF TO if_wb_object_persist, li_persistence TYPE REF TO if_wb_object_persist,
lr_data TYPE REF TO data, lr_data TYPE REF TO data,
lv_text TYPE string,
lx_error TYPE REF TO cx_root. lx_error TYPE REF TO cx_root.
FIELD-SYMBOLS: <lg_data> TYPE any, FIELD-SYMBOLS: <lg_data> TYPE any,
@ -269,17 +277,9 @@ CLASS zcl_abapgit_object_ddlx IMPLEMENTATION.
ig_data = <lg_data> ). ig_data = <lg_data> ).
CATCH cx_root INTO lx_error. CATCH cx_root INTO lx_error.
lv_text = lx_error->get_text( ). zcx_abapgit_exception=>raise( iv_text = lx_error->get_text( )
zcx_abapgit_exception=>raise( lv_text ). ix_previous = lx_error ).
ENDTRY. ENDTRY.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~is_locked.
rv_is_locked = exists_a_lock_entry_for( iv_lock_object = 'ESDICT'
iv_argument = |{ ms_item-obj_type }{ ms_item-obj_name }| ).
ENDMETHOD.
ENDCLASS. ENDCLASS.