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.
|
INTERFACES lif_object.
|
||||||
ALIASES mo_files FOR lif_object~mo_files.
|
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
|
ENDCLASS. "lcl_object_msag DEFINITION
|
||||||
|
|
||||||
*----------------------------------------------------------------------*
|
*----------------------------------------------------------------------*
|
||||||
|
@ -111,21 +128,24 @@ CLASS lcl_object_msag IMPLEMENTATION.
|
||||||
lcx_exception=>raise( 'Error from RS_CORR_INSERT' ).
|
lcx_exception=>raise( 'Error from RS_CORR_INSERT' ).
|
||||||
ENDIF.
|
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>.
|
LOOP AT lt_t100 ASSIGNING <ls_t100>.
|
||||||
DELETE lt_before WHERE msgnr = <ls_t100>-msgnr.
|
DELETE lt_before WHERE msgnr = <ls_t100>-msgnr.
|
||||||
|
|
||||||
MODIFY t100 FROM <ls_t100>. "#EC CI_SUBRC
|
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.
|
CLEAR ls_t100u.
|
||||||
MOVE-CORRESPONDING <ls_t100> TO ls_t100u ##enh_ok.
|
MOVE-CORRESPONDING <ls_t100> TO ls_t100u ##enh_ok.
|
||||||
ls_t100u-name = sy-uname.
|
ls_t100u-name = sy-uname.
|
||||||
ls_t100u-datum = sy-datum.
|
ls_t100u-datum = sy-datum.
|
||||||
ls_t100u-selfdef = '3'.
|
ls_t100u-selfdef = '3'.
|
||||||
MODIFY t100u FROM ls_t100u. "#EC CI_SUBRC
|
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.
|
ENDLOOP.
|
||||||
|
|
||||||
ls_t100a-masterlang = mv_language.
|
ls_t100a-masterlang = mv_language.
|
||||||
|
@ -134,19 +154,26 @@ CLASS lcl_object_msag IMPLEMENTATION.
|
||||||
ls_t100a-ldate = sy-datum.
|
ls_t100a-ldate = sy-datum.
|
||||||
ls_t100a-ltime = sy-uzeit.
|
ls_t100a-ltime = sy-uzeit.
|
||||||
MODIFY t100a FROM ls_t100a. "#EC CI_SUBRC
|
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-sprsl = mv_language.
|
||||||
ls_t100t-arbgb = ls_t100a-arbgb.
|
ls_t100t-arbgb = ls_t100a-arbgb.
|
||||||
ls_t100t-stext = ls_t100a-stext.
|
ls_t100t-stext = ls_t100a-stext.
|
||||||
MODIFY t100t FROM ls_t100t. "#EC CI_SUBRC
|
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.
|
LOOP AT lt_before INTO ls_t100u.
|
||||||
DELETE FROM t100 WHERE arbgb = ls_t100u-arbgb AND msgnr = ls_t100u-msgnr.
|
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.
|
DELETE FROM t100u WHERE arbgb = ls_t100u-arbgb AND msgnr = ls_t100u-msgnr.
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
||||||
|
deserialize_texts( io_xml = io_xml ).
|
||||||
|
|
||||||
|
|
||||||
ENDMETHOD. "deserialize
|
ENDMETHOD. "deserialize
|
||||||
|
|
||||||
METHOD lif_object~serialize.
|
METHOD lif_object~serialize.
|
||||||
|
@ -168,7 +195,7 @@ CLASS lcl_object_msag IMPLEMENTATION.
|
||||||
SELECT * FROM t100 INTO TABLE lt_source
|
SELECT * FROM t100 INTO TABLE lt_source
|
||||||
WHERE sprsl = mv_language
|
WHERE sprsl = mv_language
|
||||||
AND arbgb = lv_msg_id
|
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,
|
CLEAR: ls_inf-lastuser,
|
||||||
ls_inf-ldate,
|
ls_inf-ldate,
|
||||||
|
@ -179,9 +206,96 @@ CLASS lcl_object_msag IMPLEMENTATION.
|
||||||
io_xml->add( ig_data = lt_source
|
io_xml->add( ig_data = lt_source
|
||||||
iv_name = 'T100' ).
|
iv_name = 'T100' ).
|
||||||
|
|
||||||
|
serialize_texts( io_xml ).
|
||||||
|
|
||||||
ENDMETHOD. "serialize
|
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.
|
METHOD lif_object~compare_to_remote_version.
|
||||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user