mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-02 21:08:01 +08:00
Merge pull request #617 from larshp/issue_425
Support for core data services #425
This commit is contained in:
commit
775e917de9
170
src/zabapgit_object_ddls.prog.abap
Normal file
170
src/zabapgit_object_ddls.prog.abap
Normal file
|
@ -0,0 +1,170 @@
|
||||||
|
*&---------------------------------------------------------------------*
|
||||||
|
*& Include ZABAPGIT_OBJECT_VIEW
|
||||||
|
*&---------------------------------------------------------------------*
|
||||||
|
|
||||||
|
* todo:
|
||||||
|
* - downport
|
||||||
|
|
||||||
|
*----------------------------------------------------------------------*
|
||||||
|
* CLASS lcl_object_view DEFINITION
|
||||||
|
*----------------------------------------------------------------------*
|
||||||
|
*
|
||||||
|
*----------------------------------------------------------------------*
|
||||||
|
CLASS lcl_object_ddls DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
||||||
|
|
||||||
|
PUBLIC SECTION.
|
||||||
|
INTERFACES lif_object.
|
||||||
|
ALIASES mo_files FOR lif_object~mo_files.
|
||||||
|
|
||||||
|
ENDCLASS. "lcl_object_dtel DEFINITION
|
||||||
|
|
||||||
|
*----------------------------------------------------------------------*
|
||||||
|
* CLASS lcl_object_view IMPLEMENTATION
|
||||||
|
*----------------------------------------------------------------------*
|
||||||
|
*
|
||||||
|
*----------------------------------------------------------------------*
|
||||||
|
CLASS lcl_object_ddls IMPLEMENTATION.
|
||||||
|
|
||||||
|
METHOD lif_object~has_changed_since.
|
||||||
|
rv_changed = abap_true.
|
||||||
|
ENDMETHOD. "lif_object~has_changed_since
|
||||||
|
|
||||||
|
METHOD lif_object~changed_by.
|
||||||
|
* todo
|
||||||
|
rv_user = c_user_unknown.
|
||||||
|
ENDMETHOD. "lif_object~changed_by
|
||||||
|
|
||||||
|
METHOD lif_object~get_metadata.
|
||||||
|
rs_metadata = get_metadata( ).
|
||||||
|
|
||||||
|
rs_metadata-ddic = abap_true.
|
||||||
|
rs_metadata-delete_tadir = abap_true.
|
||||||
|
ENDMETHOD. "lif_object~get_metadata
|
||||||
|
|
||||||
|
METHOD lif_object~exists.
|
||||||
|
* todo
|
||||||
|
rv_bool = abap_true.
|
||||||
|
ENDMETHOD. "lif_object~exists
|
||||||
|
|
||||||
|
METHOD lif_object~jump.
|
||||||
|
lcx_exception=>raise( 'todo, DDLS jump' ).
|
||||||
|
ENDMETHOD. "jump
|
||||||
|
|
||||||
|
METHOD lif_object~delete.
|
||||||
|
|
||||||
|
DATA: li_ddl TYPE REF TO object.
|
||||||
|
|
||||||
|
|
||||||
|
CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE')
|
||||||
|
RECEIVING
|
||||||
|
handler = li_ddl.
|
||||||
|
|
||||||
|
TRY.
|
||||||
|
CALL METHOD li_ddl->('IF_DD_DDL_HANDLER~DELETE')
|
||||||
|
EXPORTING
|
||||||
|
name = ms_item-obj_name.
|
||||||
|
CATCH cx_root.
|
||||||
|
lcx_exception=>raise( 'DDLS error' ).
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
ENDMETHOD. "delete
|
||||||
|
|
||||||
|
METHOD lif_object~serialize.
|
||||||
|
|
||||||
|
DATA: li_ddl TYPE REF TO object,
|
||||||
|
lv_source TYPE string,
|
||||||
|
lr_data TYPE REF TO data.
|
||||||
|
|
||||||
|
FIELD-SYMBOLS: <ls_data> TYPE any,
|
||||||
|
<lv_field> TYPE any.
|
||||||
|
|
||||||
|
|
||||||
|
CREATE DATA lr_data TYPE ('DDDDLSRCV').
|
||||||
|
ASSIGN lr_data->* TO <ls_data>.
|
||||||
|
|
||||||
|
CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE')
|
||||||
|
RECEIVING
|
||||||
|
handler = li_ddl.
|
||||||
|
|
||||||
|
TRY.
|
||||||
|
CALL METHOD li_ddl->('IF_DD_DDL_HANDLER~READ')
|
||||||
|
EXPORTING
|
||||||
|
name = ms_item-obj_name
|
||||||
|
get_state = 'A'
|
||||||
|
IMPORTING
|
||||||
|
ddddlsrcv_wa = <ls_data>.
|
||||||
|
CATCH cx_root.
|
||||||
|
lcx_exception=>raise( 'DDLS error' ).
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
ASSIGN COMPONENT 'AS4USER' OF STRUCTURE <ls_data> TO <lv_field>.
|
||||||
|
ASSERT sy-subrc = 0.
|
||||||
|
CLEAR <lv_field>.
|
||||||
|
ASSIGN COMPONENT 'AS4DATE' OF STRUCTURE <ls_data> TO <lv_field>.
|
||||||
|
ASSERT sy-subrc = 0.
|
||||||
|
CLEAR <lv_field>.
|
||||||
|
ASSIGN COMPONENT 'AS4TIME' OF STRUCTURE <ls_data> TO <lv_field>.
|
||||||
|
ASSERT sy-subrc = 0.
|
||||||
|
CLEAR <lv_field>.
|
||||||
|
|
||||||
|
ASSIGN COMPONENT 'SOURCE' OF STRUCTURE <ls_data> TO <lv_field>.
|
||||||
|
ASSERT sy-subrc = 0.
|
||||||
|
|
||||||
|
mo_files->add_string( iv_ext = 'asddls'
|
||||||
|
iv_string = <lv_field> ) ##no_text.
|
||||||
|
|
||||||
|
CLEAR <lv_field>.
|
||||||
|
|
||||||
|
io_xml->add( iv_name = 'DDLS'
|
||||||
|
ig_data = <ls_data> ).
|
||||||
|
|
||||||
|
ENDMETHOD. "serialize
|
||||||
|
|
||||||
|
METHOD lif_object~deserialize.
|
||||||
|
|
||||||
|
DATA: li_ddl TYPE REF TO object,
|
||||||
|
lr_data TYPE REF TO data.
|
||||||
|
|
||||||
|
FIELD-SYMBOLS: <ls_data> TYPE any,
|
||||||
|
<lv_field> TYPE any.
|
||||||
|
|
||||||
|
|
||||||
|
CREATE DATA lr_data TYPE ('DDDDLSRCV').
|
||||||
|
ASSIGN lr_data->* TO <ls_data>.
|
||||||
|
|
||||||
|
io_xml->read( EXPORTING iv_name = 'DDLS'
|
||||||
|
CHANGING cg_data = <ls_data> ).
|
||||||
|
|
||||||
|
ASSIGN COMPONENT 'SOURCE' OF STRUCTURE <ls_data> TO <lv_field>.
|
||||||
|
ASSERT sy-subrc = 0.
|
||||||
|
<lv_field> = mo_files->read_string( 'asddls' ) ##no_text.
|
||||||
|
|
||||||
|
CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE')
|
||||||
|
RECEIVING
|
||||||
|
handler = li_ddl.
|
||||||
|
|
||||||
|
TRY.
|
||||||
|
CALL METHOD li_ddl->('IF_DD_DDL_HANDLER~SAVE')
|
||||||
|
EXPORTING
|
||||||
|
name = ms_item-obj_name
|
||||||
|
put_state = 'N'
|
||||||
|
ddddlsrcv_wa = <ls_data>.
|
||||||
|
|
||||||
|
CALL METHOD li_ddl->('IF_DD_DDL_HANDLER~WRITE_TADIR')
|
||||||
|
EXPORTING
|
||||||
|
objectname = ms_item-obj_name
|
||||||
|
devclass = iv_package
|
||||||
|
prid = 0.
|
||||||
|
CATCH cx_root.
|
||||||
|
lcx_exception=>raise( 'DDLS error' ).
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
lcl_objects_activation=>add_item( ms_item ).
|
||||||
|
|
||||||
|
ENDMETHOD. "deserialize
|
||||||
|
|
||||||
|
METHOD lif_object~compare_to_remote_version.
|
||||||
|
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||||
|
ENDMETHOD. "lif_object~compare_to_remote_version
|
||||||
|
|
||||||
|
ENDCLASS. "lcl_object_view IMPLEMENTATION
|
22
src/zabapgit_object_ddls.prog.xml
Normal file
22
src/zabapgit_object_ddls.prog.xml
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||||
|
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||||
|
<asx:values>
|
||||||
|
<PROGDIR>
|
||||||
|
<NAME>ZABAPGIT_OBJECT_DDLS</NAME>
|
||||||
|
<STATE>A</STATE>
|
||||||
|
<VARCL>X</VARCL>
|
||||||
|
<SUBC>I</SUBC>
|
||||||
|
<RLOAD>E</RLOAD>
|
||||||
|
<UCCHECK>X</UCCHECK>
|
||||||
|
</PROGDIR>
|
||||||
|
<TPOOL>
|
||||||
|
<item>
|
||||||
|
<ID>R</ID>
|
||||||
|
<ENTRY>Include ZABAPGIT_OBJECT_VIEW</ENTRY>
|
||||||
|
<LENGTH>28</LENGTH>
|
||||||
|
</item>
|
||||||
|
</TPOOL>
|
||||||
|
</asx:values>
|
||||||
|
</asx:abap>
|
||||||
|
</abapGit>
|
|
@ -8,6 +8,7 @@ INCLUDE zabapgit_object_acid.
|
||||||
INCLUDE zabapgit_object_auth.
|
INCLUDE zabapgit_object_auth.
|
||||||
INCLUDE zabapgit_object_oo_functions.
|
INCLUDE zabapgit_object_oo_functions.
|
||||||
INCLUDE zabapgit_object_clas.
|
INCLUDE zabapgit_object_clas.
|
||||||
|
INCLUDE zabapgit_object_ddls.
|
||||||
INCLUDE zabapgit_object_doct.
|
INCLUDE zabapgit_object_doct.
|
||||||
INCLUDE zabapgit_object_docv.
|
INCLUDE zabapgit_object_docv.
|
||||||
INCLUDE zabapgit_object_doma.
|
INCLUDE zabapgit_object_doma.
|
||||||
|
|
|
@ -56,7 +56,7 @@ CLASS lcl_object_view IMPLEMENTATION.
|
||||||
rv_user = c_user_unknown.
|
rv_user = c_user_unknown.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD. "lif_object~changed_by
|
||||||
|
|
||||||
METHOD lif_object~get_metadata.
|
METHOD lif_object~get_metadata.
|
||||||
rs_metadata = get_metadata( ).
|
rs_metadata = get_metadata( ).
|
||||||
|
@ -65,7 +65,8 @@ CLASS lcl_object_view IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD lif_object~exists.
|
METHOD lif_object~exists.
|
||||||
|
|
||||||
DATA: lv_viewname TYPE dd25l-viewname.
|
DATA: lv_viewname TYPE dd25l-viewname,
|
||||||
|
lv_ddl_view TYPE abap_bool.
|
||||||
|
|
||||||
|
|
||||||
SELECT SINGLE viewname FROM dd25l INTO lv_viewname
|
SELECT SINGLE viewname FROM dd25l INTO lv_viewname
|
||||||
|
@ -74,6 +75,21 @@ CLASS lcl_object_view IMPLEMENTATION.
|
||||||
AND as4vers = '0000'.
|
AND as4vers = '0000'.
|
||||||
rv_bool = boolc( sy-subrc = 0 ).
|
rv_bool = boolc( sy-subrc = 0 ).
|
||||||
|
|
||||||
|
IF rv_bool = abap_true.
|
||||||
|
TRY.
|
||||||
|
CALL METHOD ('CL_DD_DDL_UTILITIES')=>('CHECK_FOR_DDL_VIEW')
|
||||||
|
EXPORTING
|
||||||
|
objname = lv_viewname
|
||||||
|
RECEIVING
|
||||||
|
is_ddl_view = lv_ddl_view.
|
||||||
|
|
||||||
|
IF lv_ddl_view = abap_true.
|
||||||
|
rv_bool = abap_false.
|
||||||
|
ENDIF.
|
||||||
|
CATCH cx_root.
|
||||||
|
ENDTRY.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
ENDMETHOD. "lif_object~exists
|
ENDMETHOD. "lif_object~exists
|
||||||
|
|
||||||
METHOD lif_object~jump.
|
METHOD lif_object~jump.
|
||||||
|
@ -246,6 +262,6 @@ CLASS lcl_object_view IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD lif_object~compare_to_remote_version.
|
METHOD lif_object~compare_to_remote_version.
|
||||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||||
ENDMETHOD.
|
ENDMETHOD. "lif_object~compare_to_remote_version
|
||||||
|
|
||||||
ENDCLASS. "lcl_object_view IMPLEMENTATION
|
ENDCLASS. "lcl_object_view IMPLEMENTATION
|
||||||
|
|
|
@ -141,6 +141,7 @@ CLASS lcl_tadir IMPLEMENTATION.
|
||||||
AND object <> 'SOTR'
|
AND object <> 'SOTR'
|
||||||
AND object <> 'SFB1'
|
AND object <> 'SFB1'
|
||||||
AND object <> 'SFB2'
|
AND object <> 'SFB2'
|
||||||
|
AND object <> 'STOB' " auto generated by core data services
|
||||||
AND delflag = abap_false
|
AND delflag = abap_false
|
||||||
ORDER BY PRIMARY KEY. "#EC CI_GENBUFF "#EC CI_SUBRC
|
ORDER BY PRIMARY KEY. "#EC CI_GENBUFF "#EC CI_SUBRC
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user