anchor.diff:    ENDMETHOD.
   
   
  +  METHOD save.
  +
  +    DATA: ls_scp1 TYPE ty_scp1,
  +          ls_text TYPE scprtext.
  +
  +
  +* copy everything to local, the function module changes the values
  +    ls_scp1 = is_scp1.
  +
  +    READ TABLE ls_scp1-scprtext INTO ls_text WITH KEY langu = sy-langu.
  +
  +    CALL FUNCTION 'SCPR_TEMPL_MN_TEMPLATE_SAVE'
  +      EXPORTING
  +        profid                    = ls_scp1-scprattr-id
  +        proftext                  = ls_text-text
  +        category                  = ls_scp1-scprattr-category
  +        cli_dep                   = ls_scp1-scprattr-cli_dep
  +        cli_cas                   = ls_scp1-scprattr-cli_cas
  +        reftype                   = ls_scp1-scprattr-reftype
  +        refname                   = ls_scp1-scprattr-refname
  +        orgid                     = ls_scp1-scprattr-orgid
  +        component                 = ls_scp1-scprattr-component
  +        minrelease                = ls_scp1-scprattr-minrelease
  +        maxrelease                = ls_scp1-scprattr-maxrelease
  +        act_info                  = ls_scp1-scprattr-act_info
  +        bcset_type                = ls_scp1-scprattr-type
  +        fldtxtvar_supplied        = 'YES'
  +        with_transp_insert        = abap_false
  +        with_progress_indicator   = abap_true
  +        remove_denied_data        = abap_true
  +        ask_for_cont_after_remove = abap_true
  +      TABLES
  +        values                    = ls_scp1-scprvals
  +        valuesl                   = ls_scp1-scprvall
  +        recattr                   = ls_scp1-scprreca
  +        it_fldv                   = ls_scp1-scprfldv
  +        texts                     = ls_scp1-scprtext
  +      EXCEPTIONS
  +        user_abort                = 1
  +        error_in_transport_layer  = 2
  +        inconsistent_data         = 3
  +        database_error            = 4
  +        OTHERS                    = 5.
  +    IF sy-subrc <> 0.
  +      zcx_abapgit_exception=>raise( |Error saving SCP1, { sy-tabix }| ).
  +    ENDIF.
  +
  +  ENDMETHOD.
  +
  +
     METHOD zif_abapgit_object~changed_by.
   
  -    rv_user = c_user_unknown.
  +    SELECT SINGLE modifier INTO rv_user FROM scprattr
  +      WHERE id = ms_item-obj_name
  +      AND version = 'N'.
  +    IF sy-subrc <> 0 OR rv_user IS INITIAL.
  +      rv_user = c_user_unknown.
  +    ENDIF.
   
     ENDMETHOD.
   
  
positive.code: CLASS ZCL_ABAPGIT_OBJECT_SCP1 IMPLEMENTATION.
  
  
    METHOD get.
  
      FIELD-SYMBOLS: <ls_scprvals> TYPE scprvals,
                     <ls_scprreca> TYPE scprreca.
  
  
      CALL FUNCTION 'SCPR_TEXT_GET'
        EXPORTING
          profid        = cs_scp1-scprattr-id
          category      = cs_scp1-scprattr-category
        TABLES
          texts         = cs_scp1-scprtext
        EXCEPTIONS
          no_text_found = 1.
  
      CALL FUNCTION 'SCPR_TEMPL_DB_VALS_GET_DETAIL'
        EXPORTING
          profid   = cs_scp1-scprattr-id
          category = cs_scp1-scprattr-category
        TABLES
          values   = cs_scp1-scprvals
          valuesl  = cs_scp1-scprvall
          recattr  = cs_scp1-scprreca.
  
  * normalize the XML
      LOOP AT cs_scp1-scprvals ASSIGNING <ls_scprvals>.
  
negative.code:         scprfldv TYPE STANDARD TABLE OF scprfldv WITH DEFAULT KEY,
        END OF ty_scp1 .
  
      METHODS dequeue .
      METHODS enqueue
        RAISING
          zcx_abapgit_exception .
      METHODS save
        IMPORTING
          !is_scp1 TYPE ty_scp1
        RAISING
          zcx_abapgit_exception .
      METHODS adjust_inbound
        CHANGING
          !cs_scp1 TYPE ty_scp1 .
      METHODS adjust_outbound
        CHANGING
          !cs_scp1 TYPE ty_scp1 .
      METHODS load
        CHANGING
          !cs_scp1 TYPE ty_scp1 .
    PRIVATE SECTION.
  