VIEW: Add translation support (#5806)

fix linter
This commit is contained in:
Christian Günter 2022-10-06 02:11:46 +02:00 committed by GitHub
parent f8564cb679
commit 86751b6961
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -11,7 +11,12 @@ CLASS zcl_abapgit_object_view DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
ty_dd28j TYPE STANDARD TABLE OF dd28j
WITH NON-UNIQUE DEFAULT KEY,
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,
help TYPE viewclass VALUE 'H',
database TYPE viewclass VALUE 'D',
@ -28,6 +33,8 @@ CLASS zcl_abapgit_object_view DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
METHODS:
read_view
IMPORTING
iv_language TYPE sy-langu
EXPORTING
ev_state TYPE ddgotstate
es_dd25v TYPE dd25v
@ -36,6 +43,19 @@ CLASS zcl_abapgit_object_view DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
et_dd27p TYPE ty_dd27p
et_dd28j TYPE ty_dd28j
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
zcx_abapgit_exception.
ENDCLASS.
@ -55,7 +75,7 @@ CLASS zcl_abapgit_object_view IMPLEMENTATION.
EXPORTING
name = lv_name
state = 'A'
langu = mv_language
langu = iv_language
IMPORTING
gotstate = ev_state
dd25v_wa = es_dd25v
@ -169,6 +189,9 @@ CLASS zcl_abapgit_object_view IMPLEMENTATION.
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
deserialize_texts( io_xml = io_xml
is_dd25v = ls_dd25v ).
deserialize_longtexts( ii_xml = io_xml
iv_longtext_id = c_longtext_id_view ).
@ -248,6 +271,8 @@ CLASS zcl_abapgit_object_view IMPLEMENTATION.
FIELD-SYMBOLS: <ls_dd27p> LIKE LINE OF lt_dd27p.
read_view(
EXPORTING
iv_language = mv_language
IMPORTING
ev_state = lv_state
es_dd25v = ls_dd25v
@ -313,8 +338,127 @@ CLASS zcl_abapgit_object_view IMPLEMENTATION.
io_xml->add( ig_data = lt_dd28v
iv_name = 'DD28V_TABLE' ).
serialize_texts( io_xml ).
serialize_longtexts( ii_xml = io_xml
iv_longtext_id = c_longtext_id_view ).
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.