mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
commit
e416f41b48
|
@ -13,6 +13,23 @@ CLASS lcl_object_msag DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
|||
INTERFACES lif_object.
|
||||
ALIASES mo_files FOR lif_object~mo_files.
|
||||
|
||||
PRIVATE SECTION.
|
||||
TYPES: BEGIN OF ty_t100_texts,
|
||||
sprsl TYPE t100-sprsl,
|
||||
msgnr TYPE t100-msgnr,
|
||||
text TYPE t100-text,
|
||||
END OF ty_t100_texts,
|
||||
tt_t100_texts TYPE STANDARD TABLE OF ty_t100_texts.
|
||||
|
||||
METHODS:
|
||||
serialize_texts
|
||||
IMPORTING io_xml TYPE REF TO lcl_xml_output
|
||||
RAISING lcx_exception,
|
||||
deserialize_texts
|
||||
IMPORTING io_xml TYPE REF TO lcl_xml_input
|
||||
RAISING lcx_exception.
|
||||
|
||||
|
||||
ENDCLASS. "lcl_object_msag DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
|
@ -111,21 +128,24 @@ CLASS lcl_object_msag IMPLEMENTATION.
|
|||
lcx_exception=>raise( 'Error from RS_CORR_INSERT' ).
|
||||
ENDIF.
|
||||
|
||||
SELECT * FROM t100u INTO TABLE lt_before WHERE arbgb = ls_t100a-arbgb.
|
||||
SELECT * FROM t100u INTO TABLE lt_before
|
||||
WHERE arbgb = ls_t100a-arbgb ORDER BY msgnr. "#EC CI_GENBUFF "#EC CI_BYPASS
|
||||
|
||||
LOOP AT lt_t100 ASSIGNING <ls_t100>.
|
||||
DELETE lt_before WHERE msgnr = <ls_t100>-msgnr.
|
||||
|
||||
MODIFY t100 FROM <ls_t100>. "#EC CI_SUBRC
|
||||
ASSERT sy-subrc = 0.
|
||||
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( 'MSAG: Table T100 modify failed' ).
|
||||
ENDIF.
|
||||
CLEAR ls_t100u.
|
||||
MOVE-CORRESPONDING <ls_t100> TO ls_t100u ##enh_ok.
|
||||
ls_t100u-name = sy-uname.
|
||||
ls_t100u-datum = sy-datum.
|
||||
ls_t100u-selfdef = '3'.
|
||||
MODIFY t100u FROM ls_t100u. "#EC CI_SUBRC
|
||||
ASSERT sy-subrc = 0.
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( 'MSAG: Table T100U modify failed' ).
|
||||
ENDIF.
|
||||
ENDLOOP.
|
||||
|
||||
ls_t100a-masterlang = mv_language.
|
||||
|
@ -134,19 +154,26 @@ CLASS lcl_object_msag IMPLEMENTATION.
|
|||
ls_t100a-ldate = sy-datum.
|
||||
ls_t100a-ltime = sy-uzeit.
|
||||
MODIFY t100a FROM ls_t100a. "#EC CI_SUBRC
|
||||
ASSERT sy-subrc = 0.
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( 'MSAG: Table T100A modify failed' ).
|
||||
ENDIF.
|
||||
|
||||
ls_t100t-sprsl = mv_language.
|
||||
ls_t100t-arbgb = ls_t100a-arbgb.
|
||||
ls_t100t-stext = ls_t100a-stext.
|
||||
MODIFY t100t FROM ls_t100t. "#EC CI_SUBRC
|
||||
ASSERT sy-subrc = 0.
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( 'MSAG: Table T100T modify failed' ).
|
||||
ENDIF.
|
||||
|
||||
LOOP AT lt_before INTO ls_t100u.
|
||||
DELETE FROM t100 WHERE arbgb = ls_t100u-arbgb AND msgnr = ls_t100u-msgnr.
|
||||
DELETE FROM t100u WHERE arbgb = ls_t100u-arbgb AND msgnr = ls_t100u-msgnr.
|
||||
ENDLOOP.
|
||||
|
||||
deserialize_texts( io_xml = io_xml ).
|
||||
|
||||
|
||||
ENDMETHOD. "deserialize
|
||||
|
||||
METHOD lif_object~serialize.
|
||||
|
@ -168,7 +195,7 @@ CLASS lcl_object_msag IMPLEMENTATION.
|
|||
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,
|
||||
|
@ -179,9 +206,96 @@ CLASS lcl_object_msag IMPLEMENTATION.
|
|||
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.
|
||||
ENDMETHOD.
|
||||
|
|
Loading…
Reference in New Issue
Block a user