mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
214 lines
6.3 KiB
ABAP
214 lines
6.3 KiB
ABAP
*&---------------------------------------------------------------------*
|
|
*& Include ZABAPGIT_OBJECT_WDYA
|
|
*&---------------------------------------------------------------------*
|
|
|
|
*----------------------------------------------------------------------*
|
|
* CLASS lcl_object_wdya DEFINITION
|
|
*----------------------------------------------------------------------*
|
|
*
|
|
*----------------------------------------------------------------------*
|
|
CLASS lcl_object_wdya DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
|
|
|
PUBLIC SECTION.
|
|
INTERFACES lif_object.
|
|
ALIASES mo_files FOR lif_object~mo_files.
|
|
|
|
PRIVATE SECTION.
|
|
METHODS read
|
|
EXPORTING es_app TYPE wdy_application
|
|
et_properties TYPE wdy_app_property_table
|
|
RAISING lcx_exception.
|
|
|
|
METHODS save
|
|
IMPORTING is_app TYPE wdy_application
|
|
it_properties TYPE wdy_app_property_table
|
|
iv_package TYPE devclass
|
|
RAISING lcx_exception.
|
|
|
|
ENDCLASS. "lcl_object_wdya DEFINITION
|
|
|
|
*----------------------------------------------------------------------*
|
|
* CLASS lcl_object_wdya IMPLEMENTATION
|
|
*----------------------------------------------------------------------*
|
|
*
|
|
*----------------------------------------------------------------------*
|
|
CLASS lcl_object_wdya IMPLEMENTATION.
|
|
|
|
METHOD lif_object~has_changed_since.
|
|
rv_changed = abap_true.
|
|
ENDMETHOD. "lif_object~has_changed_since
|
|
|
|
METHOD lif_object~changed_by.
|
|
rv_user = c_user_unknown. " todo
|
|
ENDMETHOD.
|
|
|
|
METHOD lif_object~get_metadata.
|
|
rs_metadata = get_metadata( ).
|
|
ENDMETHOD. "lif_object~get_metadata
|
|
|
|
METHOD lif_object~exists.
|
|
|
|
DATA: lv_name TYPE wdy_application_name.
|
|
|
|
|
|
lv_name = ms_item-obj_name.
|
|
|
|
TRY.
|
|
cl_wdy_md_application=>get_object_by_key(
|
|
name = lv_name
|
|
version = 'A' ).
|
|
rv_bool = abap_true.
|
|
CATCH cx_wdy_md_not_existing.
|
|
rv_bool = abap_false.
|
|
CATCH cx_wdy_md_permission_failure.
|
|
lcx_exception=>raise( 'WDYA, permission failure' ).
|
|
ENDTRY.
|
|
|
|
ENDMETHOD. "lif_object~exists
|
|
|
|
METHOD read.
|
|
|
|
DATA: li_app TYPE REF TO if_wdy_md_application,
|
|
li_map TYPE REF TO if_object_map,
|
|
lo_prop TYPE REF TO cl_wdy_md_application_property,
|
|
ls_prop LIKE LINE OF et_properties,
|
|
lv_name TYPE wdy_application_name.
|
|
|
|
|
|
CLEAR es_app.
|
|
CLEAR et_properties.
|
|
|
|
lv_name = ms_item-obj_name.
|
|
TRY.
|
|
li_app = cl_wdy_md_application=>get_object_by_key(
|
|
name = lv_name
|
|
version = 'A' ).
|
|
CATCH cx_wdy_md_not_existing.
|
|
RETURN.
|
|
CATCH cx_wdy_md_permission_failure.
|
|
lcx_exception=>raise( 'WDYA, permission failure' ).
|
|
ENDTRY.
|
|
|
|
li_app->if_wdy_md_object~get_definition( IMPORTING definition = es_app ).
|
|
CLEAR: es_app-author,
|
|
es_app-createdon,
|
|
es_app-changedby,
|
|
es_app-changedon.
|
|
|
|
li_map = li_app->get_properties( ).
|
|
DO li_map->size( ) TIMES.
|
|
lo_prop ?= li_map->get_by_position( sy-index ).
|
|
lo_prop->get_definition( IMPORTING definition = ls_prop ).
|
|
APPEND ls_prop TO et_properties.
|
|
ENDDO.
|
|
|
|
ENDMETHOD. "read
|
|
|
|
METHOD lif_object~serialize.
|
|
|
|
DATA: ls_app TYPE wdy_application,
|
|
lt_properties TYPE wdy_app_property_table.
|
|
|
|
|
|
read( IMPORTING es_app = ls_app
|
|
et_properties = lt_properties ).
|
|
|
|
io_xml->add( iv_name = 'APP'
|
|
ig_data = ls_app ).
|
|
io_xml->add( iv_name = 'PROPERTIES'
|
|
ig_data = lt_properties ).
|
|
|
|
ENDMETHOD. "serialize
|
|
|
|
METHOD save.
|
|
|
|
DATA: li_prop TYPE REF TO if_wdy_md_application_property,
|
|
lo_app TYPE REF TO cl_wdy_md_application.
|
|
|
|
FIELD-SYMBOLS: <ls_property> LIKE LINE OF it_properties.
|
|
|
|
|
|
TRY.
|
|
CREATE OBJECT lo_app
|
|
EXPORTING
|
|
name = is_app-application_name
|
|
definition = is_app
|
|
devclass = iv_package.
|
|
|
|
LOOP AT it_properties ASSIGNING <ls_property>.
|
|
li_prop = lo_app->if_wdy_md_application~create_property( <ls_property>-name ).
|
|
li_prop->set_value( <ls_property>-value ).
|
|
ENDLOOP.
|
|
|
|
lo_app->if_wdy_md_lockable_object~save_to_database( ).
|
|
CATCH cx_wdy_md_exception.
|
|
lcx_exception=>raise( 'error saving WDYA' ).
|
|
ENDTRY.
|
|
|
|
ENDMETHOD. "save
|
|
|
|
METHOD lif_object~deserialize.
|
|
|
|
DATA: ls_app TYPE wdy_application,
|
|
lt_properties TYPE wdy_app_property_table.
|
|
|
|
|
|
io_xml->read( EXPORTING iv_name = 'APP'
|
|
CHANGING cg_data = ls_app ).
|
|
io_xml->read( EXPORTING iv_name = 'PROPERTIES'
|
|
CHANGING cg_data = lt_properties ).
|
|
|
|
save( is_app = ls_app
|
|
it_properties = lt_properties
|
|
iv_package = iv_package ).
|
|
|
|
ENDMETHOD. "deserialize
|
|
|
|
METHOD lif_object~delete.
|
|
|
|
DATA: li_app TYPE REF TO if_wdy_md_application,
|
|
lv_objkey TYPE wdy_wb_appl_name,
|
|
lv_type TYPE seu_type,
|
|
lv_name TYPE wdy_application_name.
|
|
|
|
|
|
lv_name = ms_item-obj_name.
|
|
TRY.
|
|
li_app = cl_wdy_md_application=>get_object_by_key(
|
|
name = lv_name
|
|
version = 'A' ).
|
|
li_app->if_wdy_md_object~delete( ).
|
|
li_app->if_wdy_md_lockable_object~save_to_database( ).
|
|
|
|
* method save_to_database calls function module TR_TADIR_INTERFACE
|
|
* with test mode = X, so it does not delete the TADIR entry.
|
|
* Instead the standard code uses RS_TREE_OBJECT_PLACEMENT to delete
|
|
* the TADIR entry
|
|
lv_objkey = ms_item-obj_name.
|
|
CONCATENATE 'O' swbm_c_type_wdy_application INTO lv_type.
|
|
CALL FUNCTION 'RS_TREE_OBJECT_PLACEMENT'
|
|
EXPORTING
|
|
object = lv_objkey
|
|
type = lv_type
|
|
operation = 'DELETE'.
|
|
|
|
CATCH cx_wdy_md_not_existing.
|
|
RETURN.
|
|
CATCH cx_wdy_md_exception.
|
|
lcx_exception=>raise( 'WDYA, error deleting' ).
|
|
ENDTRY.
|
|
|
|
ENDMETHOD. "delete
|
|
|
|
METHOD lif_object~jump.
|
|
|
|
CALL FUNCTION 'RS_TOOL_ACCESS'
|
|
EXPORTING
|
|
operation = 'SHOW'
|
|
object_name = ms_item-obj_name
|
|
object_type = ms_item-obj_type
|
|
in_new_window = abap_true.
|
|
|
|
ENDMETHOD. "jump
|
|
|
|
ENDCLASS. "lcl_object_wdya IMPLEMENTATION |