mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
parent
f8564cb679
commit
86751b6961
|
@ -11,7 +11,12 @@ CLASS zcl_abapgit_object_view DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
|
||||||
ty_dd28j TYPE STANDARD TABLE OF dd28j
|
ty_dd28j TYPE STANDARD TABLE OF dd28j
|
||||||
WITH NON-UNIQUE DEFAULT KEY,
|
WITH NON-UNIQUE DEFAULT KEY,
|
||||||
ty_dd28v TYPE STANDARD TABLE OF dd28v
|
ty_dd28v TYPE STANDARD TABLE OF dd28v
|
||||||
WITH NON-UNIQUE DEFAULT KEY.
|
WITH NON-UNIQUE DEFAULT KEY,
|
||||||
|
BEGIN OF ty_dd25_text,
|
||||||
|
ddlanguage TYPE dd25t-ddlanguage,
|
||||||
|
ddtext TYPE dd25t-ddtext,
|
||||||
|
END OF ty_dd25_text ,
|
||||||
|
ty_dd25_texts TYPE STANDARD TABLE OF ty_dd25_text.
|
||||||
CONSTANTS: BEGIN OF co_viewclass,
|
CONSTANTS: BEGIN OF co_viewclass,
|
||||||
help TYPE viewclass VALUE 'H',
|
help TYPE viewclass VALUE 'H',
|
||||||
database TYPE viewclass VALUE 'D',
|
database TYPE viewclass VALUE 'D',
|
||||||
|
@ -28,14 +33,29 @@ CLASS zcl_abapgit_object_view DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
|
||||||
|
|
||||||
METHODS:
|
METHODS:
|
||||||
read_view
|
read_view
|
||||||
|
IMPORTING
|
||||||
|
iv_language TYPE sy-langu
|
||||||
EXPORTING
|
EXPORTING
|
||||||
ev_state TYPE ddgotstate
|
ev_state TYPE ddgotstate
|
||||||
es_dd25v TYPE dd25v
|
es_dd25v TYPE dd25v
|
||||||
es_dd09l TYPE dd09l
|
es_dd09l TYPE dd09l
|
||||||
et_dd26v TYPE ty_dd26v
|
et_dd26v TYPE ty_dd26v
|
||||||
et_dd27p TYPE ty_dd27p
|
et_dd27p TYPE ty_dd27p
|
||||||
et_dd28j TYPE ty_dd28j
|
et_dd28j TYPE ty_dd28j
|
||||||
et_dd28v TYPE ty_dd28v
|
et_dd28v TYPE ty_dd28v
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception,
|
||||||
|
|
||||||
|
serialize_texts
|
||||||
|
IMPORTING
|
||||||
|
io_xml TYPE REF TO zif_abapgit_xml_output
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception,
|
||||||
|
|
||||||
|
deserialize_texts
|
||||||
|
IMPORTING
|
||||||
|
io_xml TYPE REF TO zif_abapgit_xml_input
|
||||||
|
is_dd25v TYPE dd25v
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception.
|
zcx_abapgit_exception.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
@ -55,7 +75,7 @@ CLASS zcl_abapgit_object_view IMPLEMENTATION.
|
||||||
EXPORTING
|
EXPORTING
|
||||||
name = lv_name
|
name = lv_name
|
||||||
state = 'A'
|
state = 'A'
|
||||||
langu = mv_language
|
langu = iv_language
|
||||||
IMPORTING
|
IMPORTING
|
||||||
gotstate = ev_state
|
gotstate = ev_state
|
||||||
dd25v_wa = es_dd25v
|
dd25v_wa = es_dd25v
|
||||||
|
@ -169,6 +189,9 @@ CLASS zcl_abapgit_object_view IMPLEMENTATION.
|
||||||
zcx_abapgit_exception=>raise_t100( ).
|
zcx_abapgit_exception=>raise_t100( ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
|
deserialize_texts( io_xml = io_xml
|
||||||
|
is_dd25v = ls_dd25v ).
|
||||||
|
|
||||||
deserialize_longtexts( ii_xml = io_xml
|
deserialize_longtexts( ii_xml = io_xml
|
||||||
iv_longtext_id = c_longtext_id_view ).
|
iv_longtext_id = c_longtext_id_view ).
|
||||||
|
|
||||||
|
@ -248,14 +271,16 @@ CLASS zcl_abapgit_object_view IMPLEMENTATION.
|
||||||
FIELD-SYMBOLS: <ls_dd27p> LIKE LINE OF lt_dd27p.
|
FIELD-SYMBOLS: <ls_dd27p> LIKE LINE OF lt_dd27p.
|
||||||
|
|
||||||
read_view(
|
read_view(
|
||||||
|
EXPORTING
|
||||||
|
iv_language = mv_language
|
||||||
IMPORTING
|
IMPORTING
|
||||||
ev_state = lv_state
|
ev_state = lv_state
|
||||||
es_dd25v = ls_dd25v
|
es_dd25v = ls_dd25v
|
||||||
es_dd09l = ls_dd09l
|
es_dd09l = ls_dd09l
|
||||||
et_dd26v = lt_dd26v
|
et_dd26v = lt_dd26v
|
||||||
et_dd27p = lt_dd27p
|
et_dd27p = lt_dd27p
|
||||||
et_dd28j = lt_dd28j
|
et_dd28j = lt_dd28j
|
||||||
et_dd28v = lt_dd28v ).
|
et_dd28v = lt_dd28v ).
|
||||||
|
|
||||||
IF ls_dd25v IS INITIAL OR lv_state <> 'A'.
|
IF ls_dd25v IS INITIAL OR lv_state <> 'A'.
|
||||||
RETURN.
|
RETURN.
|
||||||
|
@ -313,8 +338,127 @@ CLASS zcl_abapgit_object_view IMPLEMENTATION.
|
||||||
io_xml->add( ig_data = lt_dd28v
|
io_xml->add( ig_data = lt_dd28v
|
||||||
iv_name = 'DD28V_TABLE' ).
|
iv_name = 'DD28V_TABLE' ).
|
||||||
|
|
||||||
|
serialize_texts( io_xml ).
|
||||||
|
|
||||||
serialize_longtexts( ii_xml = io_xml
|
serialize_longtexts( ii_xml = io_xml
|
||||||
iv_longtext_id = c_longtext_id_view ).
|
iv_longtext_id = c_longtext_id_view ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD serialize_texts.
|
||||||
|
|
||||||
|
DATA:
|
||||||
|
lv_index TYPE i,
|
||||||
|
ls_dd25v TYPE dd25v,
|
||||||
|
lt_dd25_texts TYPE ty_dd25_texts,
|
||||||
|
lt_i18n_langs TYPE TABLE OF langu,
|
||||||
|
lt_language_filter TYPE zif_abapgit_environment=>ty_system_language_filter.
|
||||||
|
|
||||||
|
FIELD-SYMBOLS:
|
||||||
|
<lv_lang> LIKE LINE OF lt_i18n_langs,
|
||||||
|
<ls_dd25_text> LIKE LINE OF lt_dd25_texts.
|
||||||
|
|
||||||
|
IF io_xml->i18n_params( )-main_language_only = abap_true.
|
||||||
|
RETURN.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
" Collect additional languages, skip main lang - it was serialized already
|
||||||
|
lt_language_filter = zcl_abapgit_factory=>get_environment( )->get_system_language_filter( ).
|
||||||
|
SELECT DISTINCT ddlanguage AS langu INTO TABLE lt_i18n_langs
|
||||||
|
FROM dd25v
|
||||||
|
WHERE viewname = ms_item-obj_name
|
||||||
|
AND ddlanguage IN lt_language_filter
|
||||||
|
AND ddlanguage <> mv_language. "#EC CI_SUBRC
|
||||||
|
|
||||||
|
LOOP AT lt_i18n_langs ASSIGNING <lv_lang>.
|
||||||
|
lv_index = sy-tabix.
|
||||||
|
CLEAR: ls_dd25v.
|
||||||
|
|
||||||
|
TRY.
|
||||||
|
read_view(
|
||||||
|
EXPORTING
|
||||||
|
iv_language = <lv_lang>
|
||||||
|
IMPORTING
|
||||||
|
es_dd25v = ls_dd25v ).
|
||||||
|
|
||||||
|
CATCH zcx_abapgit_exception.
|
||||||
|
CONTINUE.
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
IF ls_dd25v-ddlanguage IS INITIAL.
|
||||||
|
DELETE lt_i18n_langs INDEX lv_index. " Don't save this lang
|
||||||
|
CONTINUE.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
APPEND INITIAL LINE TO lt_dd25_texts ASSIGNING <ls_dd25_text>.
|
||||||
|
MOVE-CORRESPONDING ls_dd25v TO <ls_dd25_text>.
|
||||||
|
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
SORT lt_i18n_langs ASCENDING.
|
||||||
|
SORT lt_dd25_texts BY ddlanguage ASCENDING.
|
||||||
|
|
||||||
|
IF lines( lt_i18n_langs ) > 0.
|
||||||
|
io_xml->add( iv_name = 'I18N_LANGS'
|
||||||
|
ig_data = lt_i18n_langs ).
|
||||||
|
|
||||||
|
io_xml->add( iv_name = 'DD25_TEXTS'
|
||||||
|
ig_data = lt_dd25_texts ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD deserialize_texts.
|
||||||
|
|
||||||
|
DATA:
|
||||||
|
lv_name TYPE ddobjname,
|
||||||
|
lt_i18n_langs TYPE TABLE OF langu,
|
||||||
|
lt_dd25_texts TYPE ty_dd25_texts,
|
||||||
|
ls_dd25v_tmp TYPE dd25v.
|
||||||
|
|
||||||
|
FIELD-SYMBOLS:
|
||||||
|
<lv_lang> TYPE langu,
|
||||||
|
<ls_dd25_text> LIKE LINE OF lt_dd25_texts.
|
||||||
|
|
||||||
|
lv_name = ms_item-obj_name.
|
||||||
|
|
||||||
|
io_xml->read( EXPORTING iv_name = 'I18N_LANGS'
|
||||||
|
CHANGING cg_data = lt_i18n_langs ).
|
||||||
|
|
||||||
|
io_xml->read( EXPORTING iv_name = 'DD25_TEXTS'
|
||||||
|
CHANGING cg_data = lt_dd25_texts ).
|
||||||
|
|
||||||
|
SORT lt_i18n_langs.
|
||||||
|
SORT lt_dd25_texts BY ddlanguage.
|
||||||
|
|
||||||
|
LOOP AT lt_i18n_langs ASSIGNING <lv_lang>.
|
||||||
|
|
||||||
|
" View description
|
||||||
|
ls_dd25v_tmp = is_dd25v.
|
||||||
|
READ TABLE lt_dd25_texts ASSIGNING <ls_dd25_text> WITH KEY ddlanguage = <lv_lang>.
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
zcx_abapgit_exception=>raise( |DD25_TEXTS cannot find lang { <lv_lang> } in XML| ).
|
||||||
|
ENDIF.
|
||||||
|
MOVE-CORRESPONDING <ls_dd25_text> TO ls_dd25v_tmp.
|
||||||
|
CALL FUNCTION 'DDIF_VIEW_PUT'
|
||||||
|
EXPORTING
|
||||||
|
name = lv_name
|
||||||
|
dd25v_wa = ls_dd25v_tmp
|
||||||
|
EXCEPTIONS
|
||||||
|
view_not_found = 1
|
||||||
|
name_inconsistent = 2
|
||||||
|
view_inconsistent = 3
|
||||||
|
put_failure = 4
|
||||||
|
put_refused = 5
|
||||||
|
OTHERS = 6.
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
zcx_abapgit_exception=>raise_t100( ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user