diff --git a/src/zabapgit_object_ucsa.prog.abap b/src/zabapgit_object_ucsa.prog.abap index 9b1723cd6..008611cc5 100644 --- a/src/zabapgit_object_ucsa.prog.abap +++ b/src/zabapgit_object_ucsa.prog.abap @@ -7,6 +7,17 @@ CLASS lcl_object_ucsa DEFINITION INHERITING FROM lcl_objects_super FINAL. PUBLIC SECTION. INTERFACES lif_object. + PRIVATE SECTION. + TYPES: + ty_id TYPE c LENGTH 30. + + METHODS: + get_persistence + IMPORTING + iv_id TYPE ty_id + RETURNING + VALUE(ro_persistence) TYPE REF TO object. + ENDCLASS. CLASS lcl_object_ucsa IMPLEMENTATION. @@ -32,18 +43,22 @@ CLASS lcl_object_ucsa IMPLEMENTATION. METHOD lif_object~exists. - DATA: lv_id TYPE uconservid. + DATA: lv_id TYPE ty_id, + lo_persistence TYPE REF TO object. lv_id = ms_item-obj_name. TRY. - DATA(lo_persistence) = cl_ucon_sa_db_persist=>if_ucon_sa_persist~get_instance( lv_id ). + lo_persistence = get_persistence( lv_id ). - lo_persistence->load( version = 'A' - language = sy-langu ). + CALL METHOD lo_persistence->('IF_UCON_SA_PERSIST~LOAD') + EXPORTING + version = 'A' + language = sy-langu. - CATCH cx_ucon_base. + CATCH cx_root. rv_bool = abap_false. + RETURN. ENDTRY. rv_bool = abap_true. @@ -52,34 +67,70 @@ CLASS lcl_object_ucsa IMPLEMENTATION. METHOD lif_object~serialize. - DATA: lv_id TYPE uconservid, - lx_root TYPE REF TO cx_root, - lv_text TYPE string, - sa TYPE uconservascomplete. + DATA: lv_id TYPE ty_id, + lx_root TYPE REF TO cx_root, + lv_text TYPE string, + lo_persistence TYPE REF TO object, + lr_sa TYPE REF TO data. + + FIELD-SYMBOLS: TYPE any, +
TYPE any, + TYPE any. lv_id = ms_item-obj_name. TRY. - DATA(lo_persistence) = cl_ucon_sa_db_persist=>if_ucon_sa_persist~get_instance( lv_id ). + CREATE DATA lr_sa TYPE ('UCONSERVASCOMPLETE'). + ASSIGN lr_sa->* TO . + ASSERT sy-subrc = 0. - lo_persistence->load( + lo_persistence = get_persistence( lv_id ). + + CALL METHOD lo_persistence->('IF_UCON_SA_PERSIST~LOAD') EXPORTING version = 'A' language = sy-langu IMPORTING - sa = sa ). + sa = . - CLEAR: sa-header-createdby, - sa-header-createdon, - sa-header-createdat, - sa-header-changedby, - sa-header-changedon, - sa-header-changedat. + ASSIGN COMPONENT 'HEADER' OF STRUCTURE + TO
. + ASSERT sy-subrc = 0. + + ASSIGN COMPONENT 'CREATEDBY' OF STRUCTURE
+ TO . + ASSERT sy-subrc = 0. + CLEAR: . + + ASSIGN COMPONENT 'CREATEDON' OF STRUCTURE
+ TO . + ASSERT sy-subrc = 0. + CLEAR: . + + ASSIGN COMPONENT 'CREATEDAT' OF STRUCTURE
+ TO . + ASSERT sy-subrc = 0. + CLEAR: . + + ASSIGN COMPONENT 'CHANGEDBY' OF STRUCTURE
+ TO . + ASSERT sy-subrc = 0. + CLEAR: . + + ASSIGN COMPONENT 'CHANGEDON' OF STRUCTURE
+ TO . + ASSERT sy-subrc = 0. + CLEAR: . + + ASSIGN COMPONENT 'CHANGEDAT' OF STRUCTURE
+ TO . + ASSERT sy-subrc = 0. + CLEAR: . io_xml->add( iv_name = 'UCSA' - ig_data = sa ). + ig_data = ). - CATCH cx_ucon_base INTO lx_root. + CATCH cx_root INTO lx_root. lv_text = lx_root->get_text( ). zcx_abapgit_exception=>raise( lv_text ). ENDTRY. @@ -88,30 +139,39 @@ CLASS lcl_object_ucsa IMPLEMENTATION. METHOD lif_object~deserialize. - DATA: lv_id TYPE uconservid, - lx_root TYPE REF TO cx_root, - lv_text TYPE string, - sa TYPE uconservascomplete. + DATA: lv_id TYPE ty_id, + lx_root TYPE REF TO cx_root, + lv_text TYPE string, + lo_persistence TYPE REF TO object, + lr_sa TYPE REF TO data. - io_xml->read( - EXPORTING - iv_name = 'UCSA' - CHANGING - cg_data = sa ). - - lv_id = ms_item-obj_name. + FIELD-SYMBOLS: TYPE any. TRY. - DATA(lo_persistence) = cl_ucon_sa_db_persist=>if_ucon_sa_persist~get_instance( lv_id ). + CREATE DATA lr_sa TYPE ('UCONSERVASCOMPLETE'). + ASSIGN lr_sa->* TO . + ASSERT sy-subrc = 0. - lo_persistence->create( ). + io_xml->read( + EXPORTING + iv_name = 'UCSA' + CHANGING + cg_data = ). - lo_persistence->save( sa = sa - version = 'A' ). + lv_id = ms_item-obj_name. + + lo_persistence = get_persistence( lv_id ). + + CALL METHOD lo_persistence->('IF_UCON_SA_PERSIST~CREATE'). + + CALL METHOD lo_persistence->('IF_UCON_SA_PERSIST~SAVE') + EXPORTING + sa = + version = 'A'. tadir_insert( iv_package ). - CATCH cx_ucon_base INTO lx_root. + CATCH cx_root INTO lx_root. lv_text = lx_root->get_text( ). zcx_abapgit_exception=>raise( lv_text ). ENDTRY. @@ -120,19 +180,28 @@ CLASS lcl_object_ucsa IMPLEMENTATION. METHOD lif_object~delete. - DATA: lv_id TYPE uconservid, - lx_root TYPE REF TO cx_root, - lv_text TYPE string, - sa TYPE uconservascomplete. + DATA: lv_id TYPE ty_id, + lx_root TYPE REF TO cx_root, + lv_text TYPE string, + lo_persistence TYPE REF TO object, + lr_sa TYPE REF TO data. - lv_id = ms_item-obj_name. + FIELD-SYMBOLS: TYPE any. TRY. - DATA(lo_persistence) = cl_ucon_sa_db_persist=>if_ucon_sa_persist~get_instance( lv_id ). + CREATE DATA lr_sa TYPE ('UCONSERVASCOMPLETE'). + ASSIGN lr_sa->* TO . + ASSERT sy-subrc = 0. - lo_persistence->delete( version = 'A' ). + lv_id = ms_item-obj_name. - CATCH cx_ucon_base INTO lx_root. + lo_persistence = get_persistence( lv_id ). + + CALL METHOD lo_persistence->('IF_UCON_SA_PERSIST~DELETE') + EXPORTING + version = 'A'. + + CATCH cx_root INTO lx_root. lv_text = lx_root->get_text( ). zcx_abapgit_exception=>raise( lv_text ). ENDTRY. @@ -165,4 +234,14 @@ CLASS lcl_object_ucsa IMPLEMENTATION. ENDMETHOD. + METHOD get_persistence. + + CALL METHOD ('CL_UCON_SA_DB_PERSIST')=>('IF_UCON_SA_PERSIST~GET_INSTANCE') + EXPORTING + id = iv_id + RECEIVING + instance = ro_persistence. + + ENDMETHOD. + ENDCLASS.