anchor.diff:  CLASS lcl_object_cmpt DEFINITION INHERITING FROM lcl_objects_super FINAL.
   
     PUBLIC SECTION.
  +    METHODS:
  +      constructor
  +        IMPORTING
  +          is_item     TYPE lif_defs=>ty_item
  +          iv_language TYPE spras.
  +
       INTERFACES lif_object.
  +
  +  PRIVATE SECTION.
  +    DATA: mo_cmp_db TYPE REF TO object.
  +
   ENDCLASS.
   
   CLASS lcl_object_cmpt IMPLEMENTATION.
   
  +  METHOD constructor.
  +
  +    super->constructor( is_item     = is_item
  +                        iv_language = iv_language ).
  +
  +    TRY.
  +        CALL METHOD ('CL_CMP_TEMPLATE')=>('S_GET_DB_ACCESS')
  +          RECEIVING
  +            r_ref_db_access = mo_cmp_db.
  +
  +      CATCH cx_root.
  +    ENDTRY.
  +
  +  ENDMETHOD.
  +
     METHOD lif_object~has_changed_since.
   
       rv_changed = abap_true.
  
positive.code: 
    METHOD lif_object~delete.
  
      DATA(cmp_db) = cl_cmp_template=>s_get_db_access( ).
  
      DATA(deleted) = cmp_db->delete_template( i_name        = |{ ms_item-obj_name }|
                                               i_version     = 'A'
                                               i_flg_header  = abap_true
                                               i_flg_lines   = abap_true ).
  
      IF deleted = abap_false.
        lcx_exception=>raise( |Error deleting CMPT { ms_item-obj_name }| ).
  
negative.code: 
    METHOD lif_object~changed_by.
  
      DATA: mi_cmp_template TYPE REF TO object.
  
      TRY.
          CALL METHOD ('CL_CMP_TEMPLATE')=>('S_CREATE_FROM_DB')
            EXPORTING
              i_name         = |{ ms_item-obj_name }|
              i_version      = 'A'
            RECEIVING
              r_ref_template = mi_cmp_template.
  
          CALL METHOD mi_cmp_template->('IF_CMP_TEMPLATE_EDIT~GET_CHANGE_USER')
            RECEIVING
              r_user = rv_user.
  
        CATCH cx_root.
          lcx_exception=>raise( 'CMPT not supported' ).
      ENDTRY.
  
    ENDMETHOD.
  
  