anchor.diff:      SELECT * FROM t100 INTO TABLE lt_source
         WHERE sprsl = mv_language
         AND arbgb = lv_msg_id
  -      ORDER BY PRIMARY KEY.               "#EC CI_SUBRC "#EC CI_GENBUFF
  +      ORDER BY PRIMARY KEY.      "#EC CI_SUBRC "#EC CI_GENBUFF
   
       CLEAR: ls_inf-lastuser,
              ls_inf-ldate,
  
positive.code:   PUBLIC SECTION.
      INTERFACES lif_object.
      ALIASES mo_files FOR lif_object~mo_files.
  
  ENDCLASS.                    "lcl_object_msag DEFINITION
  
  
negative.code:     io_xml->add( ig_data = lt_source
                   iv_name = 'T100' ).
  
      serialize_texts( io_xml ).
  
    ENDMETHOD.                    "serialize
  
    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.
          lcx_exception=>raise( 'MSAG: Table T100 modify failed' ).
        ENDIF.
      ENDLOOP.
  
    ENDMETHOD.
  
    METHOD lif_object~compare_to_remote_version.
      CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
  