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

View File

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

View File

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