mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
ACID support, close #144
This commit is contained in:
parent
edce760c8c
commit
5853f0563c
139
zabapgit.abap
139
zabapgit.abap
|
@ -3,7 +3,7 @@ REPORT zabapgit.
|
||||||
* See https://github.com/larshp/abapGit/
|
* See https://github.com/larshp/abapGit/
|
||||||
|
|
||||||
CONSTANTS: gc_xml_version TYPE string VALUE 'v0.2-alpha', "#EC NOTEXT
|
CONSTANTS: gc_xml_version TYPE string VALUE 'v0.2-alpha', "#EC NOTEXT
|
||||||
gc_abap_version TYPE string VALUE 'v0.97'. "#EC NOTEXT
|
gc_abap_version TYPE string VALUE 'v0.98'. "#EC NOTEXT
|
||||||
|
|
||||||
********************************************************************************
|
********************************************************************************
|
||||||
* The MIT License (MIT)
|
* The MIT License (MIT)
|
||||||
|
@ -3001,6 +3001,121 @@ CLASS lcl_objects_super IMPLEMENTATION.
|
||||||
|
|
||||||
ENDCLASS. "lcl_objects_super IMPLEMENTATION
|
ENDCLASS. "lcl_objects_super IMPLEMENTATION
|
||||||
|
|
||||||
|
CLASS lcl_object_acid DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
||||||
|
|
||||||
|
PUBLIC SECTION.
|
||||||
|
INTERFACES lif_object.
|
||||||
|
|
||||||
|
PRIVATE SECTION.
|
||||||
|
METHODS: create_object
|
||||||
|
RETURNING VALUE(ro_aab) TYPE REF TO cl_aab_id
|
||||||
|
RAISING lcx_exception.
|
||||||
|
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
CLASS lcl_object_acid IMPLEMENTATION.
|
||||||
|
|
||||||
|
METHOD create_object.
|
||||||
|
|
||||||
|
DATA: lv_name TYPE aab_id_name.
|
||||||
|
|
||||||
|
|
||||||
|
lv_name = ms_item-obj_name.
|
||||||
|
|
||||||
|
CREATE OBJECT ro_aab
|
||||||
|
EXPORTING
|
||||||
|
im_name = lv_name
|
||||||
|
EXCEPTIONS
|
||||||
|
name_not_allowed = 1
|
||||||
|
OTHERS = 2.
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
_raise 'error creating CL_AAB_ID object'.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD lif_object~serialize.
|
||||||
|
|
||||||
|
DATA: lo_xml TYPE REF TO lcl_xml,
|
||||||
|
lv_description TYPE aab_id_descript,
|
||||||
|
lo_aab TYPE REF TO cl_aab_id.
|
||||||
|
|
||||||
|
|
||||||
|
IF lif_object~exists( ) = abap_false.
|
||||||
|
RETURN.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
create_object( )->get_descript( IMPORTING ex_descript = lv_description ).
|
||||||
|
|
||||||
|
CREATE OBJECT lo_xml.
|
||||||
|
lo_xml->element_add( lv_description ).
|
||||||
|
mo_files->add_xml( lo_xml ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD lif_object~deserialize.
|
||||||
|
|
||||||
|
DATA: lo_xml TYPE REF TO lcl_xml,
|
||||||
|
lv_description TYPE aab_id_descript,
|
||||||
|
lo_aab TYPE REF TO cl_aab_id.
|
||||||
|
|
||||||
|
|
||||||
|
lo_xml = mo_files->read_xml( ).
|
||||||
|
lo_xml->element_read( CHANGING cg_element = lv_description ).
|
||||||
|
|
||||||
|
lo_aab = create_object( ).
|
||||||
|
lo_aab->set_descript( lv_description ).
|
||||||
|
lo_aab->save( ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD lif_object~delete.
|
||||||
|
|
||||||
|
DATA: lo_aab TYPE REF TO cl_aab_id.
|
||||||
|
|
||||||
|
|
||||||
|
lo_aab = create_object( ).
|
||||||
|
lo_aab->enqueue( ).
|
||||||
|
lo_aab->delete(
|
||||||
|
EXCEPTIONS
|
||||||
|
prop_error = 1
|
||||||
|
propt_error = 2
|
||||||
|
act_error = 3
|
||||||
|
cts_error = 4
|
||||||
|
cts_devclass = 5
|
||||||
|
id_not_found = 6
|
||||||
|
no_authorization = 7
|
||||||
|
id_still_used = 8
|
||||||
|
where_used_error = 9
|
||||||
|
OTHERS = 10 ).
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
_raise 'error deleting ACID object'.
|
||||||
|
ENDIF.
|
||||||
|
lo_aab->dequeue( ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD lif_object~exists.
|
||||||
|
|
||||||
|
DATA: lv_state TYPE flag,
|
||||||
|
lo_aab TYPE REF TO cl_aab_id.
|
||||||
|
|
||||||
|
|
||||||
|
lo_aab = create_object( ).
|
||||||
|
|
||||||
|
lo_aab->get_state(
|
||||||
|
IMPORTING
|
||||||
|
ex_state = lv_state ).
|
||||||
|
rv_bool = boolc( lv_state = abap_true ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD lif_object~jump.
|
||||||
|
_raise 'todo, jump, ACID'.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
CLASS lcl_object_auth DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
CLASS lcl_object_auth DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
||||||
|
|
||||||
PUBLIC SECTION.
|
PUBLIC SECTION.
|
||||||
|
@ -3016,7 +3131,8 @@ CLASS lcl_object_auth IMPLEMENTATION.
|
||||||
ls_authx TYPE authx.
|
ls_authx TYPE authx.
|
||||||
|
|
||||||
|
|
||||||
SELECT SINGLE * FROM authx INTO ls_authx WHERE fieldname = ms_item-obj_name.
|
SELECT SINGLE * FROM authx INTO ls_authx
|
||||||
|
WHERE fieldname = ms_item-obj_name. "#EC CI_GENBUFF
|
||||||
IF sy-subrc <> 0.
|
IF sy-subrc <> 0.
|
||||||
RETURN.
|
RETURN.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
@ -3084,7 +3200,7 @@ CLASS lcl_object_auth IMPLEMENTATION.
|
||||||
|
|
||||||
SELECT SINGLE fieldname FROM authx
|
SELECT SINGLE fieldname FROM authx
|
||||||
INTO lv_fieldname
|
INTO lv_fieldname
|
||||||
WHERE fieldname = ms_item-obj_name.
|
WHERE fieldname = ms_item-obj_name. "#EC CI_GENBUFF
|
||||||
rv_bool = boolc( sy-subrc = 0 ).
|
rv_bool = boolc( sy-subrc = 0 ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
@ -5017,7 +5133,7 @@ CLASS lcl_object_wdyn IMPLEMENTATION.
|
||||||
SELECT SINGLE component_name FROM wdy_component
|
SELECT SINGLE component_name FROM wdy_component
|
||||||
INTO lv_component_name
|
INTO lv_component_name
|
||||||
WHERE component_name = ms_item-obj_name
|
WHERE component_name = ms_item-obj_name
|
||||||
AND version = 'A'.
|
AND version = 'A'. "#EC CI_GENBUFF
|
||||||
rv_bool = boolc( sy-subrc = 0 ).
|
rv_bool = boolc( sy-subrc = 0 ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
@ -7396,7 +7512,7 @@ CLASS lcl_object_shlp IMPLEMENTATION.
|
||||||
|
|
||||||
SELECT SINGLE shlpname FROM dd30l INTO lv_shlpname
|
SELECT SINGLE shlpname FROM dd30l INTO lv_shlpname
|
||||||
WHERE shlpname = ms_item-obj_name
|
WHERE shlpname = ms_item-obj_name
|
||||||
AND as4local = 'A'.
|
AND as4local = 'A'. "#EC CI_GENBUFF
|
||||||
rv_bool = boolc( sy-subrc = 0 ).
|
rv_bool = boolc( sy-subrc = 0 ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
@ -7555,7 +7671,7 @@ CLASS lcl_object_tran IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
SELECT SINGLE tcode FROM tstc INTO lv_tcode
|
SELECT SINGLE tcode FROM tstc INTO lv_tcode
|
||||||
WHERE tcode = ms_item-obj_name.
|
WHERE tcode = ms_item-obj_name. "#EC CI_GENBUFF
|
||||||
rv_bool = boolc( sy-subrc = 0 ).
|
rv_bool = boolc( sy-subrc = 0 ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
@ -7763,7 +7879,7 @@ CLASS lcl_object_tobj IMPLEMENTATION.
|
||||||
|
|
||||||
SELECT SINGLE objectname FROM objh INTO lv_objectname
|
SELECT SINGLE objectname FROM objh INTO lv_objectname
|
||||||
WHERE objectname = ms_item-obj_name(10)
|
WHERE objectname = ms_item-obj_name(10)
|
||||||
AND objecttype = ms_item-obj_name+10.
|
AND objecttype = ms_item-obj_name+10. "#EC CI_GENBUFF
|
||||||
rv_bool = boolc( sy-subrc = 0 ).
|
rv_bool = boolc( sy-subrc = 0 ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
@ -7920,7 +8036,7 @@ CLASS lcl_object_msag IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
SELECT SINGLE arbgb FROM t100a INTO lv_arbgb
|
SELECT SINGLE arbgb FROM t100a INTO lv_arbgb
|
||||||
WHERE arbgb = ms_item-obj_name.
|
WHERE arbgb = ms_item-obj_name. "#EC CI_GENBUFF
|
||||||
rv_bool = boolc( sy-subrc = 0 ).
|
rv_bool = boolc( sy-subrc = 0 ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
@ -9505,7 +9621,7 @@ CLASS lcl_tadir IMPLEMENTATION.
|
||||||
SELECT SINGLE * FROM tadir INTO rs_tadir
|
SELECT SINGLE * FROM tadir INTO rs_tadir
|
||||||
WHERE pgmid = iv_pgmid
|
WHERE pgmid = iv_pgmid
|
||||||
AND object = iv_object
|
AND object = iv_object
|
||||||
AND obj_name LIKE lv_obj_name. "#EC CI_SUBRC
|
AND obj_name LIKE lv_obj_name. "#EC CI_SUBRC "#EC CI_GENBUFF
|
||||||
|
|
||||||
ENDMETHOD. "read_single
|
ENDMETHOD. "read_single
|
||||||
|
|
||||||
|
@ -9573,7 +9689,8 @@ CLASS lcl_tadir IMPLEMENTATION.
|
||||||
WHEN 'INTF'.
|
WHEN 'INTF'.
|
||||||
SELECT SINGLE category FROM seoclassdf INTO lv_category
|
SELECT SINGLE category FROM seoclassdf INTO lv_category
|
||||||
WHERE clsname = <ls_tadir>-obj_name
|
WHERE clsname = <ls_tadir>-obj_name
|
||||||
AND ( version = '1' OR version = '0' ) ##warn_ok.
|
AND ( version = '1'
|
||||||
|
OR version = '0' ) ##warn_ok. "#EC CI_GENBUFF
|
||||||
IF sy-subrc = 0 AND lv_category = seoc_category_webdynpro_class.
|
IF sy-subrc = 0 AND lv_category = seoc_category_webdynpro_class.
|
||||||
DELETE rt_tadir INDEX lv_index.
|
DELETE rt_tadir INDEX lv_index.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
@ -9803,7 +9920,7 @@ CLASS lcl_sap_package IMPLEMENTATION.
|
||||||
rv_path = '/'.
|
rv_path = '/'.
|
||||||
ELSE.
|
ELSE.
|
||||||
SELECT SINGLE parentcl FROM tdevc INTO lv_parentcl
|
SELECT SINGLE parentcl FROM tdevc INTO lv_parentcl
|
||||||
WHERE devclass = iv_package. "#EC CI_SUBRC
|
WHERE devclass = iv_package. "#EC CI_SUBRC "#EC CI_GENBUFF
|
||||||
ASSERT sy-subrc = 0.
|
ASSERT sy-subrc = 0.
|
||||||
|
|
||||||
IF lv_parentcl IS INITIAL.
|
IF lv_parentcl IS INITIAL.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user