anchor.diff:  
     ENDMETHOD.
   
  +
  +  METHOD zif_abapgit_object~exists.
  +
  +    DATA: lv_arbgb TYPE t100a-arbgb.
  +
  +
  +    SELECT SINGLE arbgb FROM t100a INTO lv_arbgb
  +      WHERE arbgb = ms_item-obj_name.                   "#EC CI_GENBUFF
  +    rv_bool = boolc( sy-subrc = 0 ).
  +
  +  ENDMETHOD.
  +
  +
  +  METHOD zif_abapgit_object~get_metadata.
  +    rs_metadata = get_metadata( ).
  +  ENDMETHOD.
  +
  +
  +  METHOD zif_abapgit_object~has_changed_since.
  +    rv_changed = abap_true.
  +  ENDMETHOD.
  +
  +
  +  METHOD zif_abapgit_object~is_locked.
  +
  +    DATA: lv_argument TYPE seqg3-garg.
  +
  +    lv_argument   = |{ ms_item-obj_name }|.
  +    OVERLAY lv_argument WITH '                     '.
  +    lv_argument = lv_argument && '*'.
  +
  +    rv_is_locked = exists_a_lock_entry_for( iv_lock_object = |ES_MSGSI|
  +                                            iv_argument    = lv_argument ).
  +
  +  ENDMETHOD.
  +
  +
  +  METHOD zif_abapgit_object~jump.
  +
  +    CALL FUNCTION 'RS_TOOL_ACCESS'
  +      EXPORTING
  +        operation     = 'SHOW'
  +        object_name   = ms_item-obj_name
  +        object_type   = 'MSAG'
  +        in_new_window = abap_true.
  +
  +  ENDMETHOD.
  +
  +
     METHOD zif_abapgit_object~serialize.
   
       DATA: lv_msg_id TYPE rglif-message_id,
  
positive.code:     serialize_texts( io_xml ).
  
    ENDMETHOD.
  
    METHOD serialize_texts.
  
      DATA: lv_msg_id     TYPE rglif-message_id,
            lt_t100_texts TYPE tt_t100_texts,
            lt_t100t      TYPE TABLE OF t100t,
            lt_i18n_langs TYPE TABLE OF langu.
  
      lv_msg_id = ms_item-obj_name.
  
      " Collect additional languages
      " Skip master lang - it has been already serialized
      SELECT DISTINCT sprsl AS langu INTO TABLE lt_i18n_langs
        FROM t100t
        WHERE arbgb = lv_msg_id
        AND   sprsl <> mv_language.       "#EC CI_BYPASS "#EC CI_GENBUFF.
  
      SORT lt_i18n_langs ASCENDING.
  
      IF lines( lt_i18n_langs ) > 0.
  
        SELECT * FROM t100t INTO CORRESPONDING FIELDS OF TABLE lt_t100t
          WHERE sprsl <> mv_language
          AND arbgb = lv_msg_id.                          "#EC CI_GENBUFF
  
        SELECT * FROM t100 INTO CORRESPONDING FIELDS OF TABLE lt_t100_texts
          FOR ALL ENTRIES IN lt_i18n_langs
          WHERE sprsl = lt_i18n_langs-table_line
          AND arbgb = lv_msg_id
          ORDER BY PRIMARY KEY.             "#EC CI_SUBRC "#EC CI_GENBUFF
  
        SORT lt_t100t BY sprsl ASCENDING.
        SORT lt_t100_texts BY sprsl msgnr ASCENDING.
  
        io_xml->add( iv_name = 'I18N_LANGS'
                     ig_data = lt_i18n_langs ).
  
        io_xml->add( iv_name = 'T100T'
                     ig_data = lt_t100t ).
  
        io_xml->add( iv_name = 'T100_TEXTS'
                     ig_data = lt_t100_texts ).
  
      ENDIF.
  
    ENDMETHOD.
  
    METHOD deserialize_texts.
  
      DATA: lv_msg_id     TYPE rglif-message_id,
            ls_t100       TYPE t100,
            lt_t100t      TYPE TABLE OF t100t,
            lt_t100_texts TYPE tt_t100_texts,
            lt_t100u      TYPE TABLE OF t100u.
  
      FIELD-SYMBOLS: <ls_t100_text> TYPE ty_t100_texts.
  
  
      lv_msg_id = ms_item-obj_name.
  
      SELECT * FROM t100u INTO TABLE lt_t100u
        WHERE arbgb = lv_msg_id ORDER BY PRIMARY KEY.     "#EC CI_GENBUFF
  
      io_xml->read( EXPORTING iv_name = 'T100_TEXTS'
                    CHANGING  cg_data = lt_t100_texts ).
  
      io_xml->read( EXPORTING iv_name = 'T100T'
                    CHANGING  cg_data = lt_t100t ).
  
      MODIFY t100t FROM TABLE lt_t100t.                     "#EC CI_SUBRC
  
      LOOP AT lt_t100_texts ASSIGNING <ls_t100_text>.
        "check if message exists
        READ TABLE lt_t100u TRANSPORTING NO FIELDS
          WITH KEY arbgb = lv_msg_id msgnr = <ls_t100_text>-msgnr BINARY SEARCH.
        CHECK sy-subrc = 0. "if original message doesn't exist no translations added
  
        MOVE-CORRESPONDING <ls_t100_text> TO ls_t100.
        ls_t100-arbgb = lv_msg_id.
        MODIFY t100 FROM ls_t100.                           "#EC CI_SUBRC
        IF sy-subrc <> 0.
          zcx_abapgit_exception=>raise( 'MSAG: Table T100 modify failed' ).
        ENDIF.
      ENDLOOP.
  
    ENDMETHOD.
  
    METHOD zif_abapgit_object~compare_to_remote_version.
      CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
    ENDMETHOD.
  
    METHOD zif_abapgit_object~is_locked.
  
      DATA: lv_argument TYPE seqg3-garg.
  
      lv_argument   = |{ ms_item-obj_name }|.
      OVERLAY lv_argument WITH '                     '.
      lv_argument = lv_argument && '*'.
  
      rv_is_locked = exists_a_lock_entry_for( iv_lock_object = |ES_MSGSI|
                                              iv_argument    = lv_argument ).
  
    ENDMETHOD.
  
  
    METHOD serialize_longtexts_msag.
  
      DATA: lv_object  TYPE dokhl-object,
            lt_objects TYPE STANDARD TABLE OF dokhl-object
                            WITH NON-UNIQUE DEFAULT KEY,
            lt_dokil   TYPE zif_abapgit_definitions=>tty_dokil.
  
      FIELD-SYMBOLS: <ls_t100>  TYPE t100.
  
      IF lines( it_t100 ) = 0.
        RETURN.
      ENDIF.
  
      LOOP AT it_t100 ASSIGNING <ls_t100>.
  
        lv_object = <ls_t100>-arbgb && <ls_t100>-msgnr.
        INSERT lv_object INTO TABLE lt_objects.
  
      ENDLOOP.
  
      SELECT * FROM dokil
               INTO TABLE lt_dokil
               FOR ALL ENTRIES IN lt_objects
               WHERE id     = 'NA'
               AND   object = lt_objects-table_line.
  
      serialize_longtexts( io_xml   = io_xml
                           it_dokil = lt_dokil ).
  
    ENDMETHOD.
  
  ENDCLASS.
  
negative.code: 
    ENDMETHOD.
  
  
    METHOD zif_abapgit_object~compare_to_remote_version.
      CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
    ENDMETHOD.
  
  
    METHOD zif_abapgit_object~delete.
  
  