mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
Merge pull request #608 from sbcgua/prog_serializing_texts
Prog serializing texts
This commit is contained in:
commit
f909b184e2
|
@ -13,6 +13,21 @@ CLASS lcl_object_prog DEFINITION INHERITING FROM lcl_objects_program FINAL.
|
|||
INTERFACES lif_object.
|
||||
ALIASES mo_files FOR lif_object~mo_files.
|
||||
|
||||
PRIVATE SECTION.
|
||||
TYPES: BEGIN OF ty_tpool_i18n,
|
||||
language TYPE langu,
|
||||
textpool TYPE textpool_table,
|
||||
END OF ty_tpool_i18n,
|
||||
tt_tpool_i18n TYPE STANDARD TABLE OF ty_tpool_i18n.
|
||||
|
||||
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_prog DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
|
@ -37,7 +52,7 @@ CLASS lcl_object_prog IMPLEMENTATION.
|
|||
IF sy-subrc <> 0.
|
||||
rv_user = c_user_unknown.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
ENDMETHOD. "lif_object~changed_by
|
||||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
|
@ -47,7 +62,6 @@ CLASS lcl_object_prog IMPLEMENTATION.
|
|||
|
||||
DATA: lv_progname TYPE reposrc-progname.
|
||||
|
||||
|
||||
SELECT SINGLE progname FROM reposrc INTO lv_progname
|
||||
WHERE progname = ms_item-obj_name
|
||||
AND r3state = 'A'.
|
||||
|
@ -95,6 +109,9 @@ CLASS lcl_object_prog IMPLEMENTATION.
|
|||
is_item = ms_item
|
||||
io_files = mo_files ).
|
||||
|
||||
" Texts serializing (translations)
|
||||
serialize_texts( io_xml ).
|
||||
|
||||
ENDMETHOD. "lif_serialize~serialize
|
||||
|
||||
METHOD lif_object~deserialize.
|
||||
|
@ -116,28 +133,78 @@ CLASS lcl_object_prog IMPLEMENTATION.
|
|||
lt_tpool = read_tpool( lt_tpool_ext ).
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'PROGDIR'
|
||||
CHANGING cg_data = ls_progdir ).
|
||||
CHANGING cg_data = ls_progdir ).
|
||||
deserialize_program( is_progdir = ls_progdir
|
||||
it_source = lt_source
|
||||
it_tpool = lt_tpool
|
||||
iv_package = iv_package ).
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'DYNPROS'
|
||||
CHANGING cg_data = lt_dynpros ).
|
||||
CHANGING cg_data = lt_dynpros ).
|
||||
deserialize_dynpros( it_dynpros = lt_dynpros ).
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'CUA'
|
||||
CHANGING cg_data = ls_cua ).
|
||||
CHANGING cg_data = ls_cua ).
|
||||
deserialize_cua( iv_program_name = lv_program_name
|
||||
is_cua = ls_cua ).
|
||||
|
||||
deserialize_textpool( iv_program = ms_item-obj_name
|
||||
" Texts deserializing (English)
|
||||
deserialize_textpool( iv_program = lv_program_name
|
||||
it_tpool = lt_tpool ).
|
||||
|
||||
" Texts deserializing (translations)
|
||||
deserialize_texts( io_xml ).
|
||||
|
||||
ENDMETHOD. "lif_serialize~deserialize
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDMETHOD.
|
||||
ENDMETHOD. "lif_object~compare_to_remote_version
|
||||
|
||||
METHOD serialize_texts.
|
||||
|
||||
DATA lt_tpool_i18n TYPE tt_tpool_i18n.
|
||||
|
||||
FIELD-SYMBOLS <tpool> LIKE LINE OF lt_tpool_i18n.
|
||||
|
||||
" Table d010tinf stores info. on languages in which program is maintained
|
||||
" Select all active translations of program texts
|
||||
" Skip master language - it was already serialized
|
||||
SELECT DISTINCT language
|
||||
INTO CORRESPONDING FIELDS OF TABLE lt_tpool_i18n
|
||||
FROM d010tinf
|
||||
WHERE r3state = 'A'
|
||||
AND prog = ms_item-obj_name
|
||||
AND language <> mv_language.
|
||||
|
||||
SORT lt_tpool_i18n BY language ASCENDING.
|
||||
LOOP AT lt_tpool_i18n ASSIGNING <tpool>.
|
||||
READ TEXTPOOL ms_item-obj_name
|
||||
LANGUAGE <tpool>-language
|
||||
INTO <tpool>-textpool.
|
||||
ENDLOOP.
|
||||
|
||||
IF lines( lt_tpool_i18n ) > 0.
|
||||
io_xml->add( iv_name = 'I18N_TPOOL'
|
||||
ig_data = lt_tpool_i18n ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "serialize_texts
|
||||
|
||||
METHOD deserialize_texts.
|
||||
|
||||
DATA lt_tpool_i18n TYPE tt_tpool_i18n.
|
||||
FIELD-SYMBOLS <tpool> LIKE LINE OF lt_tpool_i18n.
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'I18N_TPOOL'
|
||||
CHANGING cg_data = lt_tpool_i18n ).
|
||||
|
||||
LOOP AT lt_tpool_i18n ASSIGNING <tpool>.
|
||||
deserialize_textpool( iv_program = ms_item-obj_name
|
||||
iv_language = <tpool>-language
|
||||
it_tpool = <tpool>-textpool ).
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD. "deserialize_texts
|
||||
|
||||
ENDCLASS. "lcl_object_prog IMPLEMENTATION
|
||||
|
|
|
@ -873,8 +873,9 @@ CLASS lcl_objects_program DEFINITION INHERITING FROM lcl_objects_super.
|
|||
RAISING lcx_exception.
|
||||
|
||||
METHODS deserialize_textpool
|
||||
IMPORTING iv_program TYPE programm
|
||||
it_tpool TYPE textpool_table
|
||||
IMPORTING iv_program TYPE programm
|
||||
it_tpool TYPE textpool_table
|
||||
iv_language TYPE langu OPTIONAL
|
||||
RAISING lcx_exception.
|
||||
|
||||
METHODS deserialize_cua
|
||||
|
@ -1410,6 +1411,14 @@ CLASS lcl_objects_program IMPLEMENTATION.
|
|||
|
||||
METHOD deserialize_textpool.
|
||||
|
||||
DATA lv_language TYPE langu.
|
||||
|
||||
IF iv_language IS INITIAL.
|
||||
lv_language = mv_language.
|
||||
ELSE.
|
||||
lv_language = iv_language.
|
||||
ENDIF.
|
||||
|
||||
READ TABLE it_tpool WITH KEY id = 'R' TRANSPORTING NO FIELDS.
|
||||
IF ( sy-subrc = 0 AND lines( it_tpool ) = 1 ) OR lines( it_tpool ) = 0.
|
||||
RETURN. " no action for includes
|
||||
|
@ -1417,14 +1426,15 @@ CLASS lcl_objects_program IMPLEMENTATION.
|
|||
|
||||
INSERT TEXTPOOL iv_program
|
||||
FROM it_tpool
|
||||
LANGUAGE mv_language
|
||||
STATE 'I'.
|
||||
LANGUAGE lv_language.
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( 'error from INSERT TEXTPOOL' ).
|
||||
ENDIF.
|
||||
|
||||
lcl_objects_activation=>add( iv_type = 'REPT'
|
||||
iv_name = iv_program ).
|
||||
IF lv_language = mv_language. " Add just once
|
||||
lcl_objects_activation=>add( iv_type = 'REPT'
|
||||
iv_name = iv_program ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "deserialize_textpool
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user