mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 11:46:38 +08:00
simple classes
This commit is contained in:
parent
d2a94a0b5d
commit
bc6ccde712
174
zabapgit.abap
174
zabapgit.abap
|
@ -1063,6 +1063,9 @@ CLASS lcl_serialize_common DEFINITION ABSTRACT.
|
||||||
RETURNING value(rs_file) TYPE st_file
|
RETURNING value(rs_file) TYPE st_file
|
||||||
RAISING lcx_exception.
|
RAISING lcx_exception.
|
||||||
|
|
||||||
|
CLASS-METHODS: activate IMPORTING is_item TYPE st_item
|
||||||
|
RAISING lcx_exception.
|
||||||
|
|
||||||
ENDCLASS. "lcl_serialize_common DEFINITION
|
ENDCLASS. "lcl_serialize_common DEFINITION
|
||||||
|
|
||||||
*----------------------------------------------------------------------*
|
*----------------------------------------------------------------------*
|
||||||
|
@ -1072,6 +1075,42 @@ ENDCLASS. "lcl_serialize_common DEFINITION
|
||||||
*----------------------------------------------------------------------*
|
*----------------------------------------------------------------------*
|
||||||
CLASS lcl_serialize_common IMPLEMENTATION.
|
CLASS lcl_serialize_common IMPLEMENTATION.
|
||||||
|
|
||||||
|
METHOD activate.
|
||||||
|
|
||||||
|
DATA: lt_objects TYPE dwinactiv_tab,
|
||||||
|
lv_obj_name TYPE dwinactiv-obj_name.
|
||||||
|
|
||||||
|
|
||||||
|
lv_obj_name = is_item-obj_name.
|
||||||
|
|
||||||
|
CALL FUNCTION 'RS_INACTIVE_OBJECTS_IN_OBJECT'
|
||||||
|
EXPORTING
|
||||||
|
obj_name = lv_obj_name
|
||||||
|
object = is_item-obj_type
|
||||||
|
TABLES
|
||||||
|
inactive_objects = lt_objects.
|
||||||
|
|
||||||
|
IF lt_objects[] IS INITIAL.
|
||||||
|
RETURN.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
CALL FUNCTION 'RS_WORKING_OBJECTS_ACTIVATE'
|
||||||
|
TABLES
|
||||||
|
objects = lt_objects
|
||||||
|
EXCEPTIONS
|
||||||
|
excecution_error = 1
|
||||||
|
cancelled = 2
|
||||||
|
insert_into_corr_error = 3
|
||||||
|
execution_error = 4
|
||||||
|
OTHERS = 5.
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
_raise 'error from RS_WORKING_OBJECTS_ACTIVATE'.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
* todo, fm RS_MASS_ACTIVATION?
|
||||||
|
|
||||||
|
ENDMETHOD. "activate
|
||||||
|
|
||||||
METHOD read_abap.
|
METHOD read_abap.
|
||||||
|
|
||||||
DATA: lv_filename TYPE string,
|
DATA: lv_filename TYPE string,
|
||||||
|
@ -1329,6 +1368,12 @@ CLASS lcl_serialize_clas DEFINITION INHERITING FROM lcl_serialize_common FINAL.
|
||||||
it_files TYPE tt_files
|
it_files TYPE tt_files
|
||||||
RAISING lcx_exception.
|
RAISING lcx_exception.
|
||||||
|
|
||||||
|
PRIVATE SECTION.
|
||||||
|
CLASS-METHODS exists IMPORTING is_clskey TYPE seoclskey
|
||||||
|
RETURNING value(rv_exists) TYPE abap_bool.
|
||||||
|
|
||||||
|
CLASS-METHODS remove_signatures CHANGING ct_source TYPE seop_source_string.
|
||||||
|
|
||||||
ENDCLASS. "lcl_serialize_dtel DEFINITION
|
ENDCLASS. "lcl_serialize_dtel DEFINITION
|
||||||
|
|
||||||
*----------------------------------------------------------------------*
|
*----------------------------------------------------------------------*
|
||||||
|
@ -1338,6 +1383,53 @@ ENDCLASS. "lcl_serialize_dtel DEFINITION
|
||||||
*----------------------------------------------------------------------*
|
*----------------------------------------------------------------------*
|
||||||
CLASS lcl_serialize_clas IMPLEMENTATION.
|
CLASS lcl_serialize_clas IMPLEMENTATION.
|
||||||
|
|
||||||
|
METHOD remove_signatures.
|
||||||
|
|
||||||
|
* signatures messes up in CL_OO_SOURCE when deserializing and serializing within same session
|
||||||
|
|
||||||
|
CONSTANTS:
|
||||||
|
lc_begin TYPE string VALUE '* <SIGNATURE>---------------------------------------------------------------------------------------+',
|
||||||
|
lc_end TYPE string VALUE '* +--------------------------------------------------------------------------------------</SIGNATURE>'.
|
||||||
|
|
||||||
|
DATA: lv_remove TYPE abap_bool,
|
||||||
|
lv_source LIKE LINE OF ct_source.
|
||||||
|
|
||||||
|
|
||||||
|
lv_remove = abap_false.
|
||||||
|
LOOP AT ct_source INTO lv_source.
|
||||||
|
IF lv_source = lc_begin.
|
||||||
|
lv_remove = abap_true.
|
||||||
|
ENDIF.
|
||||||
|
IF lv_remove = abap_true.
|
||||||
|
DELETE ct_source INDEX sy-tabix.
|
||||||
|
ENDIF.
|
||||||
|
IF lv_source = lc_end.
|
||||||
|
lv_remove = abap_false.
|
||||||
|
ENDIF.
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
ENDMETHOD. "remove_signatures
|
||||||
|
|
||||||
|
METHOD exists.
|
||||||
|
|
||||||
|
CALL FUNCTION 'SEO_CLASS_EXISTENCE_CHECK'
|
||||||
|
EXPORTING
|
||||||
|
clskey = is_clskey
|
||||||
|
EXCEPTIONS
|
||||||
|
not_specified = 1
|
||||||
|
not_existing = 2
|
||||||
|
is_interface = 3
|
||||||
|
no_text = 4
|
||||||
|
inconsistent = 5
|
||||||
|
OTHERS = 6.
|
||||||
|
IF sy-subrc = 2.
|
||||||
|
rv_exists = abap_false.
|
||||||
|
ELSE.
|
||||||
|
rv_exists = abap_true.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD. "exists
|
||||||
|
|
||||||
METHOD serialize.
|
METHOD serialize.
|
||||||
|
|
||||||
DATA: lo_source TYPE REF TO cl_oo_source,
|
DATA: lo_source TYPE REF TO cl_oo_source,
|
||||||
|
@ -1350,19 +1442,32 @@ CLASS lcl_serialize_clas IMPLEMENTATION.
|
||||||
|
|
||||||
ls_clskey-clsname = is_item-obj_name.
|
ls_clskey-clsname = is_item-obj_name.
|
||||||
|
|
||||||
|
IF exists( ls_clskey ) = abap_false.
|
||||||
|
RETURN.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
CALL FUNCTION 'SEO_BUFFER_REFRESH'
|
||||||
|
EXPORTING
|
||||||
|
version = seoc_version_active
|
||||||
|
force = seox_true.
|
||||||
|
CALL FUNCTION 'SEO_BUFFER_REFRESH'
|
||||||
|
EXPORTING
|
||||||
|
version = seoc_version_inactive
|
||||||
|
force = seox_true.
|
||||||
|
|
||||||
CREATE OBJECT lo_source
|
CREATE OBJECT lo_source
|
||||||
EXPORTING
|
EXPORTING
|
||||||
clskey = ls_clskey
|
clskey = ls_clskey
|
||||||
EXCEPTIONS
|
EXCEPTIONS
|
||||||
class_not_existing = 1
|
class_not_existing = 1
|
||||||
OTHERS = 2.
|
OTHERS = 2.
|
||||||
IF sy-subrc = 1.
|
IF sy-subrc <> 0.
|
||||||
RETURN.
|
|
||||||
ELSEIF sy-subrc <> 0.
|
|
||||||
_raise 'error from CL_OO_SOURCE'.
|
_raise 'error from CL_OO_SOURCE'.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
lo_source->read( ).
|
|
||||||
|
lo_source->read( 'A' ).
|
||||||
lt_source = lo_source->get_old_source( ).
|
lt_source = lo_source->get_old_source( ).
|
||||||
|
remove_signatures( CHANGING ct_source = lt_source ).
|
||||||
* todo, text elements?
|
* todo, text elements?
|
||||||
* todo, local classes in class
|
* todo, local classes in class
|
||||||
|
|
||||||
|
@ -1379,7 +1484,7 @@ CLASS lcl_serialize_clas IMPLEMENTATION.
|
||||||
model_only = 4
|
model_only = 4
|
||||||
OTHERS = 5.
|
OTHERS = 5.
|
||||||
IF sy-subrc <> 0.
|
IF sy-subrc <> 0.
|
||||||
_raise 'error rom seo_class_get'.
|
_raise 'error from seo_class_get'.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
CLEAR: ls_vseoclass-uuid,
|
CLEAR: ls_vseoclass-uuid,
|
||||||
|
@ -1404,11 +1509,11 @@ CLASS lcl_serialize_clas IMPLEMENTATION.
|
||||||
|
|
||||||
DATA: ls_vseoclass TYPE vseoclass,
|
DATA: ls_vseoclass TYPE vseoclass,
|
||||||
lt_source TYPE seop_source_string,
|
lt_source TYPE seop_source_string,
|
||||||
lo_xml TYPE REF TO lcl_xml.
|
lo_source TYPE REF TO cl_oo_source,
|
||||||
|
lo_xml TYPE REF TO lcl_xml,
|
||||||
|
ls_clskey TYPE seoclskey.
|
||||||
|
|
||||||
|
|
||||||
* fm SEO_CLASS_CREATE_F_DATA
|
|
||||||
* CL_OO_SOURCE ?
|
|
||||||
lo_xml = read_xml( is_item = is_item
|
lo_xml = read_xml( is_item = is_item
|
||||||
it_files = it_files ).
|
it_files = it_files ).
|
||||||
lo_xml->structure_read( CHANGING cg_structure = ls_vseoclass ).
|
lo_xml->structure_read( CHANGING cg_structure = ls_vseoclass ).
|
||||||
|
@ -1417,9 +1522,53 @@ CLASS lcl_serialize_clas IMPLEMENTATION.
|
||||||
it_files = it_files
|
it_files = it_files
|
||||||
CHANGING ct_abap = lt_source ).
|
CHANGING ct_abap = lt_source ).
|
||||||
|
|
||||||
BREAK-POINT.
|
|
||||||
|
|
||||||
_raise 'todo'.
|
ls_clskey-clsname = is_item-obj_name.
|
||||||
|
|
||||||
|
* function group SEOK
|
||||||
|
* function group SEOQ
|
||||||
|
* todo, transport and package?
|
||||||
|
|
||||||
|
CALL FUNCTION 'SEO_CLASS_CREATE_COMPLETE'
|
||||||
|
EXPORTING
|
||||||
|
overwrite = seox_true
|
||||||
|
CHANGING
|
||||||
|
class = ls_vseoclass
|
||||||
|
EXCEPTIONS
|
||||||
|
existing = 1
|
||||||
|
is_interface = 2
|
||||||
|
db_error = 3
|
||||||
|
component_error = 4
|
||||||
|
no_access = 5
|
||||||
|
other = 6
|
||||||
|
OTHERS = 7.
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
_raise 'error from SEO_CLASS_CREATE_COMPLETE'.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
|
||||||
|
CREATE OBJECT lo_source
|
||||||
|
EXPORTING
|
||||||
|
clskey = ls_clskey
|
||||||
|
EXCEPTIONS
|
||||||
|
class_not_existing = 1
|
||||||
|
OTHERS = 2.
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
_raise 'error from CL_OO_SOURCE'.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
TRY.
|
||||||
|
lo_source->access_permission( seok_access_modify ).
|
||||||
|
lo_source->set_source( lt_source ).
|
||||||
|
lo_source->save( ).
|
||||||
|
lo_source->access_permission( seok_access_free ).
|
||||||
|
CATCH cx_oo_access_permission.
|
||||||
|
_raise 'permission error'.
|
||||||
|
CATCH cx_oo_source_save_failure.
|
||||||
|
_raise 'save failure'.
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
activate( is_item ).
|
||||||
|
|
||||||
ENDMETHOD. "deserialize
|
ENDMETHOD. "deserialize
|
||||||
|
|
||||||
|
@ -1614,7 +1763,7 @@ CLASS lcl_serialize_prog IMPLEMENTATION.
|
||||||
DATA: ls_progdir TYPE progdir,
|
DATA: ls_progdir TYPE progdir,
|
||||||
lv_program_name TYPE programm,
|
lv_program_name TYPE programm,
|
||||||
lt_source TYPE TABLE OF abaptxt255,
|
lt_source TYPE TABLE OF abaptxt255,
|
||||||
lv_source TYPE string,
|
* lv_source TYPE string,
|
||||||
ls_file LIKE LINE OF rt_files,
|
ls_file LIKE LINE OF rt_files,
|
||||||
lo_xml TYPE REF TO lcl_xml.
|
lo_xml TYPE REF TO lcl_xml.
|
||||||
|
|
||||||
|
@ -1742,8 +1891,7 @@ CLASS lcl_serialize_prog IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD deserialize.
|
METHOD deserialize.
|
||||||
|
|
||||||
DATA: lv_filename TYPE string,
|
DATA: lo_xml TYPE REF TO lcl_xml,
|
||||||
lo_xml TYPE REF TO lcl_xml,
|
|
||||||
lt_source TYPE abaptxt255_tab.
|
lt_source TYPE abaptxt255_tab.
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user