anchor.diff:  * See https://github.com/larshp/abapGit/
   
   CONSTANTS: gc_xml_version  TYPE string VALUE 'v0.2-alpha',  "#EC NOTEXT
  -           gc_abap_version TYPE string VALUE 'v0.97'.       "#EC NOTEXT
  +           gc_abap_version TYPE string VALUE 'v0.98'.       "#EC NOTEXT
   
   ********************************************************************************
   * The MIT License (MIT)
  
positive.code:     SELECT SINGLE * FROM tadir INTO rs_tadir
        WHERE pgmid = iv_pgmid
        AND object = iv_object
        AND obj_name LIKE lv_obj_name.                      "#EC CI_SUBRC
  
    ENDMETHOD.                    "read_single
  
  
negative.code: 
  ENDCLASS.                    "lcl_objects_super IMPLEMENTATION
  
  CLASS lcl_object_acid DEFINITION INHERITING FROM lcl_objects_super FINAL.
  
    PUBLIC SECTION.
      INTERFACES lif_object.
  
    PRIVATE SECTION.
      METHODS: create_object
        RETURNING VALUE(ro_aab) TYPE REF TO cl_aab_id
        RAISING   lcx_exception.
  
  ENDCLASS.
  
  CLASS lcl_object_acid IMPLEMENTATION.
  
    METHOD create_object.
  
      DATA: lv_name TYPE aab_id_name.
  
  
      lv_name = ms_item-obj_name.
  
      CREATE OBJECT ro_aab
        EXPORTING
          im_name          = lv_name
        EXCEPTIONS
          name_not_allowed = 1
          OTHERS           = 2.
      IF sy-subrc <> 0.
        _raise 'error creating CL_AAB_ID object'.
      ENDIF.
  
    ENDMETHOD.
  
    METHOD lif_object~serialize.
  
      DATA: lo_xml         TYPE REF TO lcl_xml,
            lv_description TYPE aab_id_descript,
            lo_aab         TYPE REF TO cl_aab_id.
  
  
      IF lif_object~exists( ) = abap_false.
        RETURN.
      ENDIF.
  
      create_object( )->get_descript( IMPORTING ex_descript = lv_description ).
  
      CREATE OBJECT lo_xml.
      lo_xml->element_add( lv_description ).
      mo_files->add_xml( lo_xml ).
  
    ENDMETHOD.
  
    METHOD lif_object~deserialize.
  
      DATA: lo_xml         TYPE REF TO lcl_xml,
            lv_description TYPE aab_id_descript,
            lo_aab         TYPE REF TO cl_aab_id.
  
  
      lo_xml = mo_files->read_xml( ).
      lo_xml->element_read( CHANGING cg_element = lv_description ).
  
      lo_aab = create_object( ).
      lo_aab->set_descript( lv_description ).
      lo_aab->save( ).
  
    ENDMETHOD.
  
    METHOD lif_object~delete.
  
      DATA: lo_aab TYPE REF TO cl_aab_id.
  
  
      lo_aab = create_object( ).
      lo_aab->enqueue( ).
      lo_aab->delete(
        EXCEPTIONS
          prop_error       = 1
          propt_error      = 2
          act_error        = 3
          cts_error        = 4
          cts_devclass     = 5
          id_not_found     = 6
          no_authorization = 7
          id_still_used    = 8
          where_used_error = 9
          OTHERS           = 10 ).
      IF sy-subrc <> 0.
        _raise 'error deleting ACID object'.
      ENDIF.
      lo_aab->dequeue( ).
  
    ENDMETHOD.
  
    METHOD lif_object~exists.
  
      DATA: lv_state TYPE flag,
            lo_aab   TYPE REF TO cl_aab_id.
  
  
      lo_aab = create_object( ).
  
      lo_aab->get_state(
        IMPORTING
          ex_state = lv_state ).
      rv_bool = boolc( lv_state = abap_true ).
  
    ENDMETHOD.
  
    METHOD lif_object~jump.
      _raise 'todo, jump, ACID'.
    ENDMETHOD.
  
  ENDCLASS.
  
  CLASS lcl_object_auth DEFINITION INHERITING FROM lcl_objects_super FINAL.
  
    PUBLIC SECTION.
      INTERFACES lif_object.
  
  ENDCLASS.
  
  CLASS lcl_object_auth IMPLEMENTATION.
  