anchor.diff:  
     METHOD lif_object~changed_by.
   
  -    DATA(template) = CAST cl_cmp_template( cl_cmp_template=>s_create_from_db( i_name     = |{ ms_item-obj_name }|
  -                                                                              i_version  = 'A' ) ).
  -
  -
  -    rv_user = template->if_cmp_template_edit~get_change_user( ).
  +    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.
   
  
positive.code: 
      name = ms_item-obj_name.
  
      rv_bool = cl_cmp_template=>s_template_exists( i_name    = name
                                                    i_version = 'A' ).
  
    ENDMETHOD.
  
    METHOD lif_object~serialize.
  
      DATA(cmp_db) = cl_cmp_template=>s_get_db_access( ).
  
      DATA(template) = cmp_db->read_template( i_name     = |{ ms_item-obj_name }|
                                              i_version  = 'A' ).
  
      io_xml->add( iv_name = 'CMPT'
                   ig_data = template ).
  
    ENDMETHOD.
  
    METHOD lif_object~deserialize.
  
      DATA: template TYPE if_cmp_template_db=>typ_template.
  
      io_xml->read(
        EXPORTING
          iv_name       = 'CMPT'
        CHANGING
          cg_data       = template ).
  
      DATA(cmp_db) = cl_cmp_template=>s_get_db_access( ).
  
      cmp_db->save_template( i_template_db = template
                             i_flg_header  = abap_true
                             i_flg_lines   = abap_true ).
  
      CALL FUNCTION 'RS_CORR_INSERT'
        EXPORTING
  
negative.code: 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.
  