anchor.diff:      ls_key-controller_name = is_controller-definition-controller_name.
   
       cl_wdy_md_controller=>recover_version(
  -      EXPORTING
  +      exporting
           controller_key = ls_key
           delta          = ls_delta-wdyc
  -      CHANGING
  +      changing
           corrnr         = lv_corrnr ).
   
  -  ENDMETHOD.                    "recover_controller
  -
  -  METHOD recover_view.
  -
  -    DATA: ls_key    TYPE wdy_md_view_key,
  -          lv_corrnr TYPE trkorr,
  -          ls_delta  TYPE svrs2_xversionable_object.
  +  endmethod.                    "recover_controller
  +
  +  method recover_view.
  +
  +    data: ls_key    type wdy_md_view_key,
  +          lv_corrnr type trkorr,
  +          ls_delta  type svrs2_xversionable_object.
   
   
       ls_delta = delta_view( is_view ).
  
positive.code:     ls_obj_old-wdyd-ctuse = is_definition-ext_ctlr_usages.
      ls_obj_old-wdyd-ctmap = is_definition-ext_ctx_mappings.
  
      CALL FUNCTION 'SVRS_MAKE_OBJECT_DELTA'
        EXPORTING
          obj_old              = ls_obj_new
          obj_new              = ls_obj_old
        CHANGING
          delta                = rs_delta
        EXCEPTIONS
          inconsistent_objects = 1.
      IF sy-subrc <> 0.
        lcx_exception=>raise( 'error from SVRS_MAKE_OBJECT_DELTA' ).
      ENDIF.
  
    ENDMETHOD.                    "delta_definition
  
    METHOD delta_controller.
  
      DATA: li_controller TYPE REF TO if_wdy_md_controller,
            lv_found      TYPE abap_bool,
            ls_key        TYPE wdy_md_controller_key,
            ls_obj_new    TYPE svrs2_versionable_object,
            ls_obj_old    TYPE svrs2_versionable_object.
  
      FIELD-SYMBOLS: <ls_component>            LIKE LINE OF mt_components,
                     <ls_source>               LIKE LINE OF mt_sources,
                     <lt_ctrl_exceptions>      TYPE ANY TABLE,
                     <lt_ctrl_exception_texts> TYPE ANY TABLE,
                     <excp>                    TYPE ANY TABLE,
                     <excpt>                   TYPE ANY TABLE.
  
  
      ls_key-component_name = is_controller-definition-component_name.
  
negative.code:     io_xml->add( ig_data = mt_sources
                   iv_name = 'SOURCES' ).
  
    endmethod.                    "serialize
  
    method lif_object~deserialize.
  
      data: ls_component type wdy_component_metadata.
  
      field-symbols: <ls_view>       like line of ls_component-view_metadata,
                     <ls_controller> like line of ls_component-ctlr_metadata.
  
  
      io_xml->read( exporting iv_name = 'COMPONENT'
                    changing cg_data = ls_component ).
      io_xml->read( exporting iv_name  = 'COMPONENTS'
                    changing cg_data = mt_components ).
      io_xml->read( exporting iv_name  = 'SOURCES'
                    changing cg_data = mt_sources ).
  
      ls_component-comp_metadata-definition-author = sy-uname.
      ls_component-comp_metadata-definition-createdon = sy-datum.
      recover_definition( ls_component-comp_metadata ).
  
      loop at ls_component-ctlr_metadata assigning <ls_controller>.
        <ls_controller>-definition-author = sy-uname.
        <ls_controller>-definition-createdon = sy-datum.
        recover_controller( <ls_controller> ).
      endloop.
      loop at ls_component-view_metadata assigning <ls_view>.
        <ls_view>-definition-author = sy-uname.
        <ls_view>-definition-createdon = sy-datum.
        recover_view( <ls_view> ).
      endloop.
  
      lcl_objects_activation=>add_item( ms_item ).
  
    endmethod.                    "deserialize
  
    method lif_object~delete.
  
      data: lo_component   type ref to cl_wdy_wb_component,
            lo_request     type ref to cl_wb_request,
            li_state       type ref to if_wb_program_state,
            lv_object_name type seu_objkey.
  
  
      create object lo_component.
  
      lv_object_name = ms_item-obj_name.
      create object lo_request
        exporting
          p_object_type = 'YC'
          p_object_name = lv_object_name
          p_operation   = swbm_c_op_delete_no_dialog.
  