anchor.diff:                  iv_type  TYPE ty_type
                   iv_value TYPE ty_content-value
         RAISING   lcx_exception.
  +
  +ENDCLASS.
  +
  +CLASS lcl_persistence_background DEFINITION FINAL.
  +
  +  PUBLIC SECTION.
  +
  +    CONSTANTS: BEGIN OF c_method,
  +                 nothing TYPE string VALUE 'nothing',
  +                 pull    TYPE string VALUE 'pull',
  +                 push    TYPE string VALUE 'push',
  +               END OF c_method.
  +
  +    TYPES: BEGIN OF ty_xml,
  +             method   TYPE string,
  +             username TYPE string,
  +             password TYPE string,
  +           END OF ty_xml.
  +
  +    TYPES: BEGIN OF ty_background,
  +             key TYPE lcl_persistence_db=>ty_value.
  +        INCLUDE TYPE ty_xml.
  +    TYPES: END OF ty_background.
  +    TYPES: tt_background TYPE STANDARD TABLE OF ty_background WITH DEFAULT KEY.
  +
  +    METHODS constructor.
  +
  +    METHODS list
  +      RETURNING VALUE(rt_list) TYPE tt_background
  +      RAISING   lcx_exception.
  +
  +    METHODS modify
  +      IMPORTING is_data TYPE ty_background
  +      RAISING   lcx_exception.
  +
  +    METHODS delete
  +      IMPORTING iv_key TYPE ty_background-key
  +      RAISING   lcx_exception.
  +
  +  PRIVATE SECTION.
  +    CONSTANTS c_type TYPE lcl_persistence_db=>ty_type VALUE 'BACKGROUND'.
  +
  +    DATA: mo_db TYPE REF TO lcl_persistence_db.
  +
  +    METHODS from_xml
  +      IMPORTING iv_string     TYPE string
  +      RETURNING VALUE(rs_xml) TYPE ty_xml
  +      RAISING   lcx_exception.
  +
  +    METHODS to_xml
  +      IMPORTING is_background    TYPE ty_background
  +      RETURNING VALUE(rv_string) TYPE string.
  +
  +ENDCLASS.
  +
  +CLASS lcl_persistence_background IMPLEMENTATION.
  +
  +  METHOD constructor.
  +    CREATE OBJECT mo_db.
  +  ENDMETHOD.
  +
  +  METHOD list.
  +
  +    DATA: lt_list TYPE lcl_persistence_db=>tt_content,
  +          ls_xml  TYPE ty_xml.
  +
  +    FIELD-SYMBOLS: <ls_list>   LIKE LINE OF lt_list,
  +                   <ls_output> LIKE LINE OF rt_list.
  +
  +
  +    lt_list = mo_db->list_by_type( c_type ).
  +
  +    LOOP AT lt_list ASSIGNING <ls_list>.
  +      ls_xml = from_xml( <ls_list>-data_str ).
  +
  +      APPEND INITIAL LINE TO rt_list ASSIGNING <ls_output>.
  +      MOVE-CORRESPONDING ls_xml TO <ls_output>.
  +      <ls_output>-key = <ls_list>-value.
  +    ENDLOOP.
  +
  +  ENDMETHOD.
  +
  +  METHOD modify.
  +    mo_db->modify(
  +      iv_type  = c_type
  +      iv_value = is_data-key
  +      iv_data  = to_xml( is_data ) ).
  +  ENDMETHOD.
  +
  +  METHOD delete.
  +    TRY.
  +        mo_db->read( iv_type  = c_type
  +                     iv_value = iv_key ).
  +      CATCH lcx_not_found.
  +        RETURN.
  +    ENDTRY.
  +
  +    mo_db->delete( iv_type  = c_type
  +                   iv_value = iv_key ).
  +  ENDMETHOD.
  +
  +  METHOD from_xml.
  +    CALL TRANSFORMATION id
  +      OPTIONS value_handling = 'accept_data_loss'
  +      SOURCE XML iv_string
  +      RESULT data = rs_xml ##NO_TEXT.
  +  ENDMETHOD.
  +
  +  METHOD to_xml.
  +    DATA: ls_xml TYPE ty_xml.
  +
  +    MOVE-CORRESPONDING is_background TO ls_xml.
  +
  +    CALL TRANSFORMATION id
  +      SOURCE data = ls_xml
  +      RESULT XML rv_string.
  +  ENDMETHOD.
   
   ENDCLASS.
   
  
positive.code:           ls_data       TYPE lcl_persistence_repo=>ty_repo,
            lv_returncode TYPE c,
            lv_url        TYPE string,
            lv_package    TYPE devclass,
            lt_fields     TYPE TABLE OF sval.
  
      FIELD-SYMBOLS: <ls_field> LIKE LINE OF lt_fields.
  
negative.code: * See http://www.abapgit.org
  
  CONSTANTS: gc_xml_version  TYPE string VALUE 'v1.0.0',      "#EC NOTEXT
             gc_abap_version TYPE string VALUE 'v1.10.3'.     "#EC NOTEXT
  
  ********************************************************************************
  * The MIT License (MIT)
  