support for interfaces added

This commit is contained in:
Lars Hvam 2014-11-20 16:20:08 +01:00
parent 7fd86139ef
commit 7d4f8cec7b

View File

@ -1287,7 +1287,7 @@ CLASS lcl_serialize_common IMPLEMENTATION.
* todo, refactoring
CASE iv_type.
WHEN 'CLAS'.
WHEN 'CLAS' OR 'INTF'.
CALL FUNCTION 'RS_INACTIVE_OBJECTS_IN_OBJECT'
EXPORTING
obj_name = lv_obj_name
@ -1679,7 +1679,7 @@ CLASS lcl_serialize_clas DEFINITION INHERITING FROM lcl_serialize_common FINAL.
RETURNING value(rt_source) TYPE seop_source_string
RAISING lcx_exception.
CLASS-METHODS serialize_xml IMPORTING is_clskey TYPE seoclskey
CLASS-METHODS serialize_xml IMPORTING is_item TYPE st_item
RETURNING value(ro_xml) TYPE REF TO lcl_xml
RAISING lcx_exception.
@ -1892,6 +1892,7 @@ CLASS lcl_serialize_clas IMPLEMENTATION.
it_abap = lt_source ).
APPEND ls_file TO rt_files.
IF is_item-obj_type = 'CLAS'.
lt_source = serialize_locals_def( ls_clskey ).
IF NOT lt_source[] IS INITIAL.
ls_file = abap_to_file( is_item = is_item
@ -1923,8 +1924,9 @@ CLASS lcl_serialize_clas IMPLEMENTATION.
it_abap = lt_source ). "#EC NOTEXT
APPEND ls_file TO rt_files.
ENDIF.
ENDIF.
lo_xml = serialize_xml( ls_clskey ).
lo_xml = serialize_xml( is_item ).
ls_file = xml_to_file( is_item = is_item
io_xml = lo_xml ).
APPEND ls_file TO rt_files.
@ -1938,23 +1940,27 @@ CLASS lcl_serialize_clas IMPLEMENTATION.
lt_tpool TYPE textpool_table,
lv_object TYPE dokhl-object,
lv_state TYPE dokhl-dokstate,
ls_vseointerf TYPE vseointerf,
ls_clskey TYPE seoclskey,
lt_lines TYPE tlinetab.
CALL FUNCTION 'SEO_CLASS_GET'
ls_clskey-clsname = is_item-obj_name.
CALL FUNCTION 'SEO_CLIF_GET'
EXPORTING
clskey = is_clskey
cifkey = ls_clskey
version = seoc_version_active
IMPORTING
class = ls_vseoclass
interface = ls_vseointerf
EXCEPTIONS
not_existing = 1
deleted = 2
is_interface = 3
model_only = 4
OTHERS = 5.
model_only = 3
OTHERS = 4.
IF sy-subrc <> 0.
_raise 'error from seo_class_get'.
_raise 'error from seo_clif_get'.
ENDIF.
CLEAR: ls_vseoclass-uuid,
@ -1964,16 +1970,29 @@ CLASS lcl_serialize_clas IMPLEMENTATION.
ls_vseoclass-changedon,
ls_vseoclass-r3release.
CLEAR: ls_vseointerf-uuid,
ls_vseointerf-author,
ls_vseointerf-createdon,
ls_vseointerf-changedby,
ls_vseointerf-changedon,
ls_vseointerf-r3release.
CREATE OBJECT ro_xml.
CASE is_item-obj_type.
WHEN 'CLAS'.
ro_xml->structure_add( ls_vseoclass ).
lv_cp = cl_oo_classname_service=>get_classpool_name( is_clskey-clsname ).
lv_cp = cl_oo_classname_service=>get_classpool_name( ls_clskey-clsname ).
READ TEXTPOOL lv_cp INTO lt_tpool LANGUAGE sy-langu. "#EC CI_READ_REP
ro_xml->table_add( lt_tpool ).
WHEN 'INTF'.
ro_xml->structure_add( ls_vseointerf ).
WHEN OTHERS.
ASSERT 1 = 1 + 1.
ENDCASE.
lv_object = is_clskey-clsname.
lv_object = ls_clskey-clsname.
CALL FUNCTION 'DOCU_GET'
EXPORTING
id = 'CL'
@ -2013,8 +2032,10 @@ CLASS lcl_serialize_clas IMPLEMENTATION.
it_files = it_files
io_xml = lo_xml ).
IF is_item-obj_type = 'CLAS'.
deserialize_textpool( is_item = is_item
io_xml = lo_xml ).
ENDIF.
deserialize_docu( is_item = is_item
io_xml = lo_xml ).
@ -2082,6 +2103,7 @@ CLASS lcl_serialize_clas IMPLEMENTATION.
METHOD deserialize_abap.
DATA: ls_vseoclass TYPE vseoclass,
ls_vseointerf TYPE vseointerf,
lt_source TYPE seop_source_string,
lo_source TYPE REF TO cl_oo_source,
lt_locals_def TYPE seop_source_string,
@ -2091,8 +2113,6 @@ CLASS lcl_serialize_clas IMPLEMENTATION.
ls_clskey TYPE seoclskey.
io_xml->structure_read( CHANGING cg_structure = ls_vseoclass ).
read_abap( EXPORTING is_item = is_item
it_files = it_files
CHANGING ct_abap = lt_source ).
@ -2124,6 +2144,9 @@ CLASS lcl_serialize_clas IMPLEMENTATION.
ls_clskey-clsname = is_item-obj_name.
CASE is_item-obj_type.
WHEN 'CLAS'.
io_xml->structure_read( CHANGING cg_structure = ls_vseoclass ).
CALL FUNCTION 'SEO_CLASS_CREATE_COMPLETE'
EXPORTING
@ -2142,6 +2165,31 @@ CLASS lcl_serialize_clas IMPLEMENTATION.
_raise 'error from SEO_CLASS_CREATE_COMPLETE'.
ENDIF.
WHEN 'INTF'.
io_xml->structure_read( CHANGING cg_structure = ls_vseointerf ).
CALL FUNCTION 'SEO_INTERFACE_CREATE_COMPLETE'
EXPORTING
overwrite = seox_true
CHANGING
interface = ls_vseointerf
EXCEPTIONS
existing = 1
is_class = 2
db_error = 3
component_error = 4
no_access = 5
other = 6
OTHERS = 7.
IF sy-subrc <> 0.
_raise 'Error from SEO_INTERFACE_CREATE_COMPLETE'.
ENDIF.
WHEN OTHERS.
ASSERT 1 = 1 + 1.
ENDCASE.
IF is_item-obj_type = 'CLAS'.
CALL FUNCTION 'SEO_CLASS_GENERATE_LOCALS'
EXPORTING
clskey = ls_clskey
@ -2159,6 +2207,7 @@ CLASS lcl_serialize_clas IMPLEMENTATION.
IF sy-subrc <> 0.
_raise 'error from generate_locals'.
ENDIF.
ENDIF.
CREATE OBJECT lo_source
EXPORTING
@ -3819,7 +3868,7 @@ CLASS lcl_serialize IMPLEMENTATION.
rt_files = lcl_serialize_doma=>serialize( is_item ).
WHEN 'DTEL'.
rt_files = lcl_serialize_dtel=>serialize( is_item ).
WHEN 'CLAS'.
WHEN 'CLAS' OR 'INTF'.
rt_files = lcl_serialize_clas=>serialize( is_item ).
WHEN 'FUGR'.
rt_files = lcl_serialize_fugr=>serialize( is_item ).
@ -3947,7 +3996,7 @@ CLASS lcl_serialize IMPLEMENTATION.
WHEN 'DTEL'.
lcl_serialize_dtel=>deserialize( is_item = ls_item
it_files = it_files ).
WHEN 'CLAS'.
WHEN 'CLAS' OR 'INTF'.
lcl_serialize_clas=>deserialize( is_item = ls_item
it_files = it_files ).
WHEN 'FUGR'.
@ -6217,6 +6266,7 @@ CLASS lcl_gui IMPLEMENTATION.
_add 'DTEL Data Element'.
_add 'DOMA Domain'.
_add 'CLAS Class'.
_add 'INTF Interface'.
_add 'TABL Table/Structure'.
_add 'TTYP Table Type'.
_add 'VIEW View'.