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