USE_LXE settings and serialization of selected languages (in old format) (#6168)

Co-authored-by: Lars Hvam <larshp@hotmail.com>
This commit is contained in:
Alexander Tsybulsky 2023-03-30 16:17:18 +03:00 committed by GitHub
parent ba6e530627
commit 018e56cfcf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
23 changed files with 561 additions and 69 deletions

View File

@ -116,6 +116,10 @@
<PARAMETER>IT_TRANSLATION_LANGS</PARAMETER>
<TYP>TFPLAISO</TYP>
</RSIMP>
<RSIMP>
<PARAMETER>IV_USE_LXE</PARAMETER>
<TYP>CHAR1</TYP>
</RSIMP>
</IMPORT>
<EXPORT>
<RSEXP>
@ -172,6 +176,11 @@
<KIND>P</KIND>
<STEXT>Language Table in ISO Format</STEXT>
</RSFDO>
<RSFDO>
<PARAMETER>IV_USE_LXE</PARAMETER>
<KIND>P</KIND>
<STEXT>Single-Character Flag</STEXT>
</RSFDO>
<RSFDO>
<PARAMETER>EV_RESULT</PARAMETER>
<KIND>P</KIND>

View File

@ -10,6 +10,7 @@ FUNCTION z_abapgit_serialize_parallel.
*" VALUE(IV_PATH) TYPE STRING
*" VALUE(IV_MAIN_LANGUAGE_ONLY) TYPE CHAR1
*" VALUE(IT_TRANSLATION_LANGS) TYPE TFPLAISO
*" VALUE(IV_USE_LXE) TYPE CHAR1
*" EXPORTING
*" VALUE(EV_RESULT) TYPE XSTRING
*" VALUE(EV_PATH) TYPE STRING
@ -31,6 +32,7 @@ FUNCTION z_abapgit_serialize_parallel.
ls_files = zcl_abapgit_objects=>serialize(
is_item = ls_item
iv_main_language_only = iv_main_language_only
iv_use_lxe = iv_use_lxe
iv_language = iv_language
it_translation_langs = it_translation_langs ).

View File

@ -116,11 +116,20 @@ CLASS zcl_abapgit_serialize DEFINITION
RAISING
zcx_abapgit_exception .
PRIVATE SECTION.
CLASS-METHODS determine_i18n_params
IMPORTING
!io_dot TYPE REF TO zcl_abapgit_dot_abapgit
!iv_main_language_only TYPE abap_bool
RETURNING
VALUE(rs_i18n_params) TYPE zif_abapgit_definitions=>ty_i18n_params
RAISING
zcx_abapgit_exception.
ENDCLASS.
CLASS zcl_abapgit_serialize IMPLEMENTATION.
CLASS ZCL_ABAPGIT_SERIALIZE IMPLEMENTATION.
METHOD add_apack.
@ -261,17 +270,28 @@ CLASS zcl_abapgit_serialize IMPLEMENTATION.
mo_dot_abapgit = io_dot_abapgit.
ms_local_settings = is_local_settings.
" Determine I18N parameters
IF io_dot_abapgit IS NOT INITIAL.
ms_i18n_params-main_language = io_dot_abapgit->get_main_language( ).
ms_i18n_params-main_language_only = is_local_settings-main_language_only.
ms_i18n_params-translation_languages = zcl_abapgit_lxe_texts=>get_translation_languages(
iv_main_language = io_dot_abapgit->get_main_language( )
it_i18n_languages = io_dot_abapgit->get_i18n_languages( ) ).
ms_i18n_params = determine_i18n_params(
io_dot = io_dot_abapgit
iv_main_language_only = is_local_settings-main_language_only ).
ENDMETHOD.
METHOD determine_i18n_params.
" TODO: unify with ZCL_ABAPGIT_OBJECTS=>DETERMINE_I18N_PARAMS, same code
IF io_dot IS BOUND.
rs_i18n_params-main_language = io_dot->get_main_language( ).
rs_i18n_params-use_lxe = io_dot->use_lxe( ).
rs_i18n_params-main_language_only = iv_main_language_only.
rs_i18n_params-translation_languages = zcl_abapgit_lxe_texts=>get_translation_languages(
iv_main_language = io_dot->get_main_language( )
it_i18n_languages = io_dot->get_i18n_languages( ) ).
ENDIF.
IF ms_i18n_params-main_language IS INITIAL.
ms_i18n_params-main_language = sy-langu.
IF rs_i18n_params-main_language IS INITIAL.
rs_i18n_params-main_language = sy-langu.
ENDIF.
ENDMETHOD.
@ -557,6 +577,7 @@ CLASS zcl_abapgit_serialize IMPLEMENTATION.
iv_language = ms_i18n_params-main_language
iv_main_language_only = ms_i18n_params-main_language_only
it_translation_langs = ms_i18n_params-translation_languages
iv_use_lxe = ms_i18n_params-use_lxe
EXCEPTIONS
system_failure = 1 MESSAGE lv_msg
communication_failure = 2 MESSAGE lv_msg
@ -593,6 +614,7 @@ CLASS zcl_abapgit_serialize IMPLEMENTATION.
is_item = ls_file_item-item
iv_language = ms_i18n_params-main_language
iv_main_language_only = ms_i18n_params-main_language_only
iv_use_lxe = ms_i18n_params-use_lxe
it_translation_langs = ms_i18n_params-translation_languages ).
add_to_return( is_file_item = ls_file_item

View File

@ -42,6 +42,29 @@ CLASS zcl_abapgit_lxe_texts DEFINITION
VALUE(rt_unsupported_languages) TYPE zif_abapgit_definitions=>ty_languages
RAISING
zcx_abapgit_exception .
CLASS-METHODS trim_saplangu_by_iso
IMPORTING
it_iso_filter TYPE zif_abapgit_definitions=>ty_languages
CHANGING
ct_sap_langs TYPE zif_abapgit_definitions=>ty_sap_langu_tab
RAISING
zcx_abapgit_exception.
CLASS-METHODS trim_tab_w_saplang_by_iso
IMPORTING
it_iso_filter TYPE zif_abapgit_definitions=>ty_languages
iv_lang_field_name TYPE abap_compname
iv_keep_master_lang TYPE sy-langu OPTIONAL
CHANGING
ct_tab TYPE STANDARD TABLE
RAISING
zcx_abapgit_exception.
CLASS-METHODS add_iso_langs_to_lang_filter
IMPORTING
it_iso_filter TYPE zif_abapgit_definitions=>ty_languages
CHANGING
ct_language_filter TYPE zif_abapgit_environment=>ty_system_language_filter
RAISING
zcx_abapgit_exception.
PROTECTED SECTION.
PRIVATE SECTION.
@ -123,6 +146,37 @@ ENDCLASS.
CLASS ZCL_ABAPGIT_LXE_TEXTS IMPLEMENTATION.
METHOD add_iso_langs_to_lang_filter.
DATA lv_laiso LIKE LINE OF it_iso_filter.
DATA lv_langu TYPE sy-langu.
DATA ls_range LIKE LINE OF ct_language_filter.
ls_range-sign = 'I'.
ls_range-option = 'EQ'.
LOOP AT it_iso_filter INTO lv_laiso.
cl_i18n_languages=>sap2_to_sap1(
EXPORTING
im_lang_sap2 = lv_laiso
RECEIVING
re_lang_sap1 = lv_langu
EXCEPTIONS
no_assignment = 1
OTHERS = 2 ).
IF sy-subrc <> 0.
CONTINUE.
ENDIF.
ls_range-low = lv_langu.
APPEND ls_range TO ct_language_filter.
ENDLOOP.
ENDMETHOD.
METHOD check_langs_versus_installed.
DATA lt_installed_hash TYPE HASHED TABLE OF laiso WITH UNIQUE KEY table_line.
@ -391,6 +445,86 @@ CLASS ZCL_ABAPGIT_LXE_TEXTS IMPLEMENTATION.
ENDMETHOD.
METHOD trim_saplangu_by_iso.
DATA lv_langu TYPE sy-langu.
DATA lv_laiso TYPE laiso.
DATA lv_index TYPE i.
IF it_iso_filter IS INITIAL.
RETURN. " Nothing to filter
ENDIF.
LOOP AT ct_sap_langs INTO lv_langu.
lv_index = sy-tabix.
cl_i18n_languages=>sap1_to_sap2(
EXPORTING
im_lang_sap1 = lv_langu
RECEIVING
re_lang_sap2 = lv_laiso
EXCEPTIONS
no_assignment = 1
OTHERS = 2 ).
IF sy-subrc <> 0.
DELETE ct_sap_langs INDEX lv_index. " Not in the list anyway ...
CONTINUE.
ENDIF.
" Not a sorted table, but presumably the list is small, so no significant performance flow
READ TABLE it_iso_filter TRANSPORTING NO FIELDS WITH KEY table_line = lv_laiso.
IF sy-subrc <> 0.
DELETE ct_sap_langs INDEX lv_index.
ENDIF.
ENDLOOP.
ENDMETHOD.
METHOD trim_tab_w_saplang_by_iso.
DATA lv_laiso TYPE laiso.
DATA lv_index TYPE i.
FIELD-SYMBOLS <ls_i> TYPE any.
FIELD-SYMBOLS <lv_langu> TYPE sy-langu.
IF it_iso_filter IS INITIAL OR iv_lang_field_name IS INITIAL.
RETURN. " Nothing to filter
ENDIF.
LOOP AT ct_tab ASSIGNING <ls_i>.
lv_index = sy-tabix.
ASSIGN COMPONENT iv_lang_field_name OF STRUCTURE <ls_i> TO <lv_langu>.
ASSERT sy-subrc = 0.
IF <lv_langu> = iv_keep_master_lang.
CONTINUE. " Just keep it
ENDIF.
cl_i18n_languages=>sap1_to_sap2(
EXPORTING
im_lang_sap1 = <lv_langu>
RECEIVING
re_lang_sap2 = lv_laiso
EXCEPTIONS
no_assignment = 1
OTHERS = 2 ).
IF sy-subrc <> 0.
DELETE ct_tab INDEX lv_index. " Not in the list anyway ...
CONTINUE.
ENDIF.
" Not a sorted table, but presumably the list is small, so no significant performance flow
READ TABLE it_iso_filter TRANSPORTING NO FIELDS WITH KEY table_line = lv_laiso.
IF sy-subrc <> 0.
DELETE ct_tab INDEX lv_index.
ENDIF.
ENDLOOP.
ENDMETHOD.
METHOD write_lxe_object_text_pair.
DATA:

View File

@ -2,6 +2,9 @@ CLASS ltcl_lxe_texts DEFINITION FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
PRIVATE SECTION.
METHODS:
filter_sap_langs FOR TESTING RAISING zcx_abapgit_exception,
filter_sap_langs_tab FOR TESTING RAISING zcx_abapgit_exception,
apply_iso_langs_to_lang_filter FOR TESTING RAISING zcx_abapgit_exception,
check_langs_versus_installed FOR TESTING RAISING zcx_abapgit_exception,
lang_string_to_table FOR TESTING,
table_to_lang_string FOR TESTING.
@ -129,4 +132,164 @@ CLASS ltcl_lxe_texts IMPLEMENTATION.
ENDMETHOD.
METHOD filter_sap_langs.
DATA lt_act TYPE zif_abapgit_definitions=>ty_sap_langu_tab.
DATA lt_exp TYPE zif_abapgit_definitions=>ty_sap_langu_tab.
DATA lt_filter TYPE zif_abapgit_definitions=>ty_languages.
APPEND 'DE' TO lt_filter.
APPEND 'EN' TO lt_filter.
APPEND 'E' TO lt_act.
APPEND 'D' TO lt_act.
APPEND 'S' TO lt_act.
APPEND 'E' TO lt_exp.
APPEND 'D' TO lt_exp.
zcl_abapgit_lxe_texts=>trim_saplangu_by_iso(
EXPORTING
it_iso_filter = lt_filter
CHANGING
ct_sap_langs = lt_act ).
cl_abap_unit_assert=>assert_equals(
act = lt_act
exp = lt_exp ).
" Empty filter
CLEAR: lt_act, lt_exp, lt_filter.
APPEND 'E' TO lt_act.
APPEND 'D' TO lt_act.
APPEND 'E' TO lt_exp.
APPEND 'D' TO lt_exp.
zcl_abapgit_lxe_texts=>trim_saplangu_by_iso(
EXPORTING
it_iso_filter = lt_filter
CHANGING
ct_sap_langs = lt_act ).
cl_abap_unit_assert=>assert_equals(
act = lt_act
exp = lt_exp ).
ENDMETHOD.
METHOD filter_sap_langs_tab.
DATA:
BEGIN OF ls_i,
spras TYPE sy-langu,
stuff TYPE string,
END OF ls_i.
DATA lt_act LIKE TABLE OF ls_i.
DATA lt_exp LIKE TABLE OF ls_i.
DATA lt_filter TYPE zif_abapgit_definitions=>ty_languages.
APPEND 'DE' TO lt_filter.
APPEND 'EN' TO lt_filter.
ls_i-spras = 'E'.
APPEND ls_i TO lt_act.
ls_i-spras = 'D'.
APPEND ls_i TO lt_act.
ls_i-spras = 'S'.
APPEND ls_i TO lt_act.
ls_i-spras = 'E'.
APPEND ls_i TO lt_exp.
ls_i-spras = 'D'.
APPEND ls_i TO lt_exp.
zcl_abapgit_lxe_texts=>trim_tab_w_saplang_by_iso(
EXPORTING
it_iso_filter = lt_filter
iv_lang_field_name = 'SPRAS'
CHANGING
ct_tab = lt_act ).
cl_abap_unit_assert=>assert_equals(
act = lt_act
exp = lt_exp ).
" Keep master lang
CLEAR lt_filter.
APPEND 'DE' TO lt_filter.
zcl_abapgit_lxe_texts=>trim_tab_w_saplang_by_iso(
EXPORTING
it_iso_filter = lt_filter
iv_lang_field_name = 'SPRAS'
iv_keep_master_lang = 'E'
CHANGING
ct_tab = lt_act ).
cl_abap_unit_assert=>assert_equals(
act = lt_act
exp = lt_exp ).
" Empty filter
CLEAR: lt_act, lt_exp, lt_filter.
ls_i-spras = 'E'.
APPEND ls_i TO lt_act.
ls_i-spras = 'D'.
APPEND ls_i TO lt_act.
ls_i-spras = 'E'.
APPEND ls_i TO lt_exp.
ls_i-spras = 'D'.
APPEND ls_i TO lt_exp.
zcl_abapgit_lxe_texts=>trim_tab_w_saplang_by_iso(
EXPORTING
it_iso_filter = lt_filter
iv_lang_field_name = 'SPRAS'
CHANGING
ct_tab = lt_act ).
cl_abap_unit_assert=>assert_equals(
act = lt_act
exp = lt_exp ).
ENDMETHOD.
METHOD apply_iso_langs_to_lang_filter.
DATA lt_filter TYPE zif_abapgit_definitions=>ty_languages.
DATA lt_act TYPE zif_abapgit_environment=>ty_system_language_filter.
DATA lt_exp TYPE zif_abapgit_environment=>ty_system_language_filter.
DATA ls_range LIKE LINE OF lt_act.
APPEND 'EN' TO lt_filter.
APPEND 'DE' TO lt_filter.
ls_range-sign = 'E'.
ls_range-option = 'EQ'.
ls_range-low = '!'.
APPEND ls_range TO lt_act.
APPEND ls_range TO lt_exp.
ls_range-sign = 'I'.
ls_range-option = 'EQ'.
ls_range-low = 'E'.
APPEND ls_range TO lt_exp.
ls_range-low = 'D'.
APPEND ls_range TO lt_exp.
zcl_abapgit_lxe_texts=>add_iso_langs_to_lang_filter(
EXPORTING
it_iso_filter = lt_filter
CHANGING
ct_language_filter = lt_act ).
cl_abap_unit_assert=>assert_equals(
act = lt_act
exp = lt_exp ).
ENDMETHOD.
ENDCLASS.

View File

@ -353,6 +353,13 @@ CLASS ZCL_ABAPGIT_OBJECT_CLAS IMPLEMENTATION.
ii_xml->read( EXPORTING iv_name = 'I18N_TPOOL'
CHANGING cg_data = lt_i18n_tpool ).
zcl_abapgit_lxe_texts=>trim_tab_w_saplang_by_iso(
EXPORTING
it_iso_filter = ii_xml->i18n_params( )-translation_languages
iv_lang_field_name = 'LANGUAGE'
CHANGING
ct_tab = lt_i18n_tpool ).
LOOP AT lt_i18n_tpool INTO ls_i18n_tpool.
lt_tpool = read_tpool( ls_i18n_tpool-textpool ).
mi_object_oriented_object_fct->insert_text_pool(
@ -674,6 +681,11 @@ CLASS ZCL_ABAPGIT_OBJECT_CLAS IMPLEMENTATION.
" Select all active translations of program texts
" Skip main language - it was already serialized
lt_language_filter = zcl_abapgit_factory=>get_environment( )->get_system_language_filter( ).
zcl_abapgit_lxe_texts=>add_iso_langs_to_lang_filter(
EXPORTING it_iso_filter = ii_xml->i18n_params( )-translation_languages
CHANGING ct_language_filter = lt_language_filter ).
SELECT DISTINCT language
INTO TABLE lt_langu_additional
FROM d010tinf
@ -689,7 +701,7 @@ CLASS ZCL_ABAPGIT_OBJECT_CLAS IMPLEMENTATION.
ii_xml = ii_xml
iv_clsname = ls_clskey-clsname ).
IF ii_xml->i18n_params( )-translation_languages IS INITIAL.
IF ii_xml->i18n_params( )-translation_languages IS INITIAL OR ii_xml->i18n_params( )-use_lxe = abap_false.
serialize_tpool_i18n(
ii_xml = ii_xml
it_langu_additional = lt_langu_additional
@ -807,7 +819,7 @@ CLASS ZCL_ABAPGIT_OBJECT_CLAS IMPLEMENTATION.
deserialize_tpool( io_xml ).
IF io_xml->i18n_params( )-translation_languages IS INITIAL.
IF io_xml->i18n_params( )-translation_languages IS INITIAL OR io_xml->i18n_params( )-use_lxe = abap_false.
deserialize_tpool_i18n( io_xml ).
ELSE.
deserialize_lxe_texts( io_xml ).

View File

@ -130,6 +130,10 @@ CLASS ZCL_ABAPGIT_OBJECT_DOMA IMPLEMENTATION.
ii_xml->read( EXPORTING iv_name = 'DD07_TEXTS'
CHANGING cg_data = lt_dd07_texts ).
zcl_abapgit_lxe_texts=>trim_saplangu_by_iso(
EXPORTING it_iso_filter = ii_xml->i18n_params( )-translation_languages
CHANGING ct_sap_langs = lt_i18n_langs ).
SORT lt_i18n_langs.
SORT lt_dd07_texts BY ddlanguage. " Optimization
@ -228,6 +232,11 @@ CLASS ZCL_ABAPGIT_OBJECT_DOMA IMPLEMENTATION.
" Collect additional languages, skip main lang - it was serialized already
lt_language_filter = zcl_abapgit_factory=>get_environment( )->get_system_language_filter( ).
zcl_abapgit_lxe_texts=>add_iso_langs_to_lang_filter(
EXPORTING it_iso_filter = ii_xml->i18n_params( )-translation_languages
CHANGING ct_language_filter = lt_language_filter ).
SELECT DISTINCT ddlanguage AS langu INTO TABLE lt_i18n_langs
FROM dd01v
WHERE domname = lv_name
@ -386,7 +395,7 @@ CLASS ZCL_ABAPGIT_OBJECT_DOMA IMPLEMENTATION.
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
IF io_xml->i18n_params( )-translation_languages IS INITIAL.
IF io_xml->i18n_params( )-translation_languages IS INITIAL OR io_xml->i18n_params( )-use_lxe = abap_false.
deserialize_texts(
ii_xml = io_xml
is_dd01v = ls_dd01v
@ -509,7 +518,7 @@ CLASS ZCL_ABAPGIT_OBJECT_DOMA IMPLEMENTATION.
io_xml->add( iv_name = 'DD07V_TAB'
ig_data = lt_dd07v ).
IF io_xml->i18n_params( )-translation_languages IS INITIAL.
IF io_xml->i18n_params( )-translation_languages IS INITIAL OR io_xml->i18n_params( )-use_lxe = abap_false.
serialize_texts(
ii_xml = io_xml
it_dd07v = lt_dd07v ).

View File

@ -57,6 +57,10 @@ CLASS ZCL_ABAPGIT_OBJECT_DTEL IMPLEMENTATION.
ii_xml->read( EXPORTING iv_name = 'DD04_TEXTS'
CHANGING cg_data = lt_dd04_texts ).
zcl_abapgit_lxe_texts=>trim_saplangu_by_iso(
EXPORTING it_iso_filter = ii_xml->i18n_params( )-translation_languages
CHANGING ct_sap_langs = lt_i18n_langs ).
SORT lt_i18n_langs.
SORT lt_dd04_texts BY ddlanguage. " Optimization
@ -108,6 +112,11 @@ CLASS ZCL_ABAPGIT_OBJECT_DTEL IMPLEMENTATION.
" Collect additional languages, skip main lang - it was serialized already
lt_language_filter = zcl_abapgit_factory=>get_environment( )->get_system_language_filter( ).
zcl_abapgit_lxe_texts=>add_iso_langs_to_lang_filter(
EXPORTING it_iso_filter = ii_xml->i18n_params( )-translation_languages
CHANGING ct_language_filter = lt_language_filter ).
SELECT DISTINCT ddlanguage AS langu INTO TABLE lt_i18n_langs
FROM dd04v
WHERE rollname = lv_name
@ -204,7 +213,7 @@ CLASS ZCL_ABAPGIT_OBJECT_DTEL IMPLEMENTATION.
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
IF io_xml->i18n_params( )-translation_languages IS INITIAL.
IF io_xml->i18n_params( )-translation_languages IS INITIAL OR io_xml->i18n_params( )-use_lxe = abap_false.
deserialize_texts(
ii_xml = io_xml
is_dd04v = ls_dd04v ).
@ -331,7 +340,7 @@ CLASS ZCL_ABAPGIT_OBJECT_DTEL IMPLEMENTATION.
io_xml->add( iv_name = 'DD04V'
ig_data = ls_dd04v ).
IF io_xml->i18n_params( )-translation_languages IS INITIAL.
IF io_xml->i18n_params( )-translation_languages IS INITIAL OR io_xml->i18n_params( )-use_lxe = abap_false.
serialize_texts( io_xml ).
ELSE.
serialize_lxe_texts( io_xml ).

View File

@ -161,7 +161,7 @@ ENDCLASS.
CLASS zcl_abapgit_object_fugr IMPLEMENTATION.
CLASS ZCL_ABAPGIT_OBJECT_FUGR IMPLEMENTATION.
METHOD check_rfc_parameters.
@ -983,6 +983,13 @@ CLASS zcl_abapgit_object_fugr IMPLEMENTATION.
AND prog = iv_prog_name
AND language <> mv_language ##TOO_MANY_ITAB_FIELDS.
zcl_abapgit_lxe_texts=>trim_tab_w_saplang_by_iso(
EXPORTING
it_iso_filter = ii_xml->i18n_params( )-translation_languages
iv_lang_field_name = 'LANGUAGE'
CHANGING
ct_tab = lt_tpool_i18n ).
SORT lt_tpool_i18n BY language ASCENDING.
LOOP AT lt_tpool_i18n ASSIGNING <ls_tpool>.
READ TEXTPOOL iv_prog_name
@ -1305,12 +1312,11 @@ CLASS zcl_abapgit_object_fugr IMPLEMENTATION.
lv_program_name = main_name( ).
ls_progdir = read_progdir( lv_program_name ).
IF io_xml->i18n_params( )-translation_languages IS INITIAL.
" Old I18N option
serialize_texts( iv_prog_name = lv_program_name
ii_xml = io_xml ).
IF io_xml->i18n_params( )-translation_languages IS INITIAL OR io_xml->i18n_params( )-use_lxe = abap_false.
serialize_texts(
iv_prog_name = lv_program_name
ii_xml = io_xml ).
ELSE.
" New LXE option
serialize_lxe_texts( io_xml ).
ENDIF.

View File

@ -130,6 +130,19 @@ CLASS ZCL_ABAPGIT_OBJECT_MSAG IMPLEMENTATION.
ii_xml->read( EXPORTING iv_name = 'T100T'
CHANGING cg_data = lt_t100t ).
zcl_abapgit_lxe_texts=>trim_tab_w_saplang_by_iso(
EXPORTING
it_iso_filter = ii_xml->i18n_params( )-translation_languages
iv_lang_field_name = 'SPRSL'
CHANGING
ct_tab = lt_t100_texts ).
zcl_abapgit_lxe_texts=>trim_tab_w_saplang_by_iso(
EXPORTING
it_iso_filter = ii_xml->i18n_params( )-translation_languages
iv_lang_field_name = 'SPRSL'
CHANGING
ct_tab = lt_t100t ).
MODIFY t100t FROM TABLE lt_t100t. "#EC CI_SUBRC
LOOP AT lt_t100_texts ASSIGNING <ls_t100_text>.
@ -227,6 +240,11 @@ CLASS ZCL_ABAPGIT_OBJECT_MSAG IMPLEMENTATION.
" Collect additional languages
" Skip main lang - it has been already serialized and also technical languages
lt_language_filter = zcl_abapgit_factory=>get_environment( )->get_system_language_filter( ).
zcl_abapgit_lxe_texts=>add_iso_langs_to_lang_filter(
EXPORTING it_iso_filter = ii_xml->i18n_params( )-translation_languages
CHANGING ct_language_filter = lt_language_filter ).
SELECT DISTINCT sprsl AS langu INTO TABLE lt_i18n_langs
FROM t100t
WHERE arbgb = lv_msg_id
@ -238,12 +256,13 @@ CLASS ZCL_ABAPGIT_OBJECT_MSAG IMPLEMENTATION.
IF lines( lt_i18n_langs ) > 0.
SELECT * FROM t100t INTO CORRESPONDING FIELDS OF TABLE lt_t100t
WHERE sprsl <> mv_language
* FOR ALL ENTRIES IN lt_i18n_langs
WHERE sprsl IN lt_language_filter " = lt_i18n_langs-table_line
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
* FOR ALL ENTRIES IN lt_i18n_langs
WHERE sprsl IN lt_language_filter " = lt_i18n_langs-table_line
AND arbgb = lv_msg_id
ORDER BY PRIMARY KEY. "#EC CI_SUBRC "#EC CI_GENBUFF
@ -407,7 +426,7 @@ CLASS ZCL_ABAPGIT_OBJECT_MSAG IMPLEMENTATION.
deserialize_longtexts( ii_xml = io_xml
iv_longtext_id = c_longtext_id_msag ).
IF io_xml->i18n_params( )-translation_languages IS INITIAL.
IF io_xml->i18n_params( )-translation_languages IS INITIAL OR io_xml->i18n_params( )-use_lxe = abap_false.
deserialize_texts( io_xml ).
ELSE.
deserialize_lxe_texts( io_xml ).
@ -500,7 +519,7 @@ CLASS ZCL_ABAPGIT_OBJECT_MSAG IMPLEMENTATION.
serialize_longtexts_msag( it_t100 = lt_source
ii_xml = io_xml ).
IF io_xml->i18n_params( )-translation_languages IS INITIAL.
IF io_xml->i18n_params( )-translation_languages IS INITIAL OR io_xml->i18n_params( )-use_lxe = abap_false.
serialize_texts( io_xml ).
ELSE.
serialize_lxe_texts( io_xml ).

View File

@ -160,7 +160,7 @@ CLASS ZCL_ABAPGIT_OBJECT_PARA IMPLEMENTATION.
MODIFY tparat FROM ls_tparat. "#EC CI_SUBRC
ASSERT sy-subrc = 0.
IF io_xml->i18n_params( )-translation_languages IS NOT INITIAL.
IF io_xml->i18n_params( )-translation_languages IS NOT INITIAL AND io_xml->i18n_params( )-use_lxe = abap_true.
deserialize_lxe_texts( io_xml ).
ENDIF.
@ -242,7 +242,7 @@ CLASS ZCL_ABAPGIT_OBJECT_PARA IMPLEMENTATION.
" Here only the original language is serialized,
" so it should be present for the moment. LXEs are just translations
IF io_xml->i18n_params( )-translation_languages IS NOT INITIAL.
IF io_xml->i18n_params( )-translation_languages IS NOT INITIAL AND io_xml->i18n_params( )-use_lxe = abap_true.
serialize_lxe_texts( io_xml ).
ENDIF.

View File

@ -40,7 +40,7 @@ ENDCLASS.
CLASS zcl_abapgit_object_prog IMPLEMENTATION.
CLASS ZCL_ABAPGIT_OBJECT_PROG IMPLEMENTATION.
METHOD deserialize_texts.
@ -124,6 +124,11 @@ CLASS zcl_abapgit_object_prog IMPLEMENTATION.
" Select all active translations of program texts
" Skip main language - it was already serialized
lt_language_filter = zcl_abapgit_factory=>get_environment( )->get_system_language_filter( ).
zcl_abapgit_lxe_texts=>add_iso_langs_to_lang_filter(
EXPORTING it_iso_filter = ii_xml->i18n_params( )-translation_languages
CHANGING ct_language_filter = lt_language_filter ).
SELECT DISTINCT language
INTO CORRESPONDING FIELDS OF TABLE lt_tpool_i18n
FROM d010tinf
@ -331,11 +336,9 @@ CLASS zcl_abapgit_object_prog IMPLEMENTATION.
io_files = zif_abapgit_object~mo_files ).
" Texts serializing (translations)
IF io_xml->i18n_params( )-translation_languages IS INITIAL.
" Old I18N option
IF io_xml->i18n_params( )-translation_languages IS INITIAL OR io_xml->i18n_params( )-use_lxe = abap_false.
serialize_texts( io_xml ).
ELSE.
" New LXE option
serialize_lxe_texts( io_xml ).
ENDIF.

View File

@ -275,6 +275,19 @@ CLASS ZCL_ABAPGIT_OBJECT_SHI3 IMPLEMENTATION.
io_xml->read( EXPORTING iv_name = 'TREE_TEXTS'
CHANGING cg_data = lt_texts ).
zcl_abapgit_lxe_texts=>trim_tab_w_saplang_by_iso(
EXPORTING
it_iso_filter = io_xml->i18n_params( )-translation_languages
iv_lang_field_name = 'SPRAS'
CHANGING
ct_tab = lt_titles ).
zcl_abapgit_lxe_texts=>trim_tab_w_saplang_by_iso(
EXPORTING
it_iso_filter = io_xml->i18n_params( )-translation_languages
iv_lang_field_name = 'SPRAS'
CHANGING
ct_tab = lt_texts ).
IF zif_abapgit_object~exists( ) = abap_true.
delete_tree_structure( mv_tree_id ).
ENDIF.
@ -315,7 +328,7 @@ CLASS ZCL_ABAPGIT_OBJECT_SHI3 IMPLEMENTATION.
MODIFY ttree FROM ls_ttree.
ENDIF.
IF io_xml->i18n_params( )-translation_languages IS NOT INITIAL.
IF io_xml->i18n_params( )-translation_languages IS NOT INITIAL AND io_xml->i18n_params( )-use_lxe = abap_true.
deserialize_lxe_texts( io_xml ).
ENDIF.
@ -416,13 +429,19 @@ CLASS ZCL_ABAPGIT_OBJECT_SHI3 IMPLEMENTATION.
TABLES
description = lt_titles.
IF io_xml->i18n_params( )-main_language_only = abap_true
OR io_xml->i18n_params( )-translation_languages IS NOT INITIAL.
OR io_xml->i18n_params( )-translation_languages IS NOT INITIAL AND io_xml->i18n_params( )-use_lxe = abap_true.
lv_all_languages = abap_false.
DELETE lt_titles WHERE spras <> mv_language.
ELSE.
lv_all_languages = abap_true.
zcl_abapgit_lxe_texts=>trim_tab_w_saplang_by_iso(
EXPORTING
it_iso_filter = io_xml->i18n_params( )-translation_languages
iv_lang_field_name = 'SPRAS'
iv_keep_master_lang = mv_language
CHANGING
ct_tab = lt_titles ).
ENDIF.
CALL FUNCTION 'STREE_HIERARCHY_READ'
@ -447,6 +466,14 @@ CLASS ZCL_ABAPGIT_OBJECT_SHI3 IMPLEMENTATION.
SORT lt_texts BY spras.
DELETE ADJACENT DUPLICATES FROM lt_texts COMPARING spras node_id.
zcl_abapgit_lxe_texts=>trim_tab_w_saplang_by_iso(
EXPORTING
it_iso_filter = io_xml->i18n_params( )-translation_languages
iv_lang_field_name = 'SPRAS'
iv_keep_master_lang = mv_language
CHANGING
ct_tab = lt_texts ).
io_xml->add( iv_name = 'TREE_HEAD'
ig_data = ls_head ).
io_xml->add( iv_name = 'TREE_TITLES'
@ -458,7 +485,7 @@ CLASS ZCL_ABAPGIT_OBJECT_SHI3 IMPLEMENTATION.
io_xml->add( iv_name = 'TREE_TEXTS'
ig_data = lt_texts ).
IF io_xml->i18n_params( )-translation_languages IS NOT INITIAL.
IF io_xml->i18n_params( )-translation_languages IS NOT INITIAL AND io_xml->i18n_params( )-use_lxe = abap_true.
serialize_lxe_texts( io_xml ).
ENDIF.

View File

@ -94,12 +94,12 @@ CLASS zcl_abapgit_object_tabl DEFINITION
!cs_dd03p TYPE dd03p .
METHODS serialize_texts
IMPORTING
!io_xml TYPE REF TO zif_abapgit_xml_output
!ii_xml TYPE REF TO zif_abapgit_xml_output
RAISING
zcx_abapgit_exception .
METHODS deserialize_texts
IMPORTING
!io_xml TYPE REF TO zif_abapgit_xml_input
!ii_xml TYPE REF TO zif_abapgit_xml_input
!is_dd02v TYPE dd02v
RAISING
zcx_abapgit_exception .
@ -402,12 +402,16 @@ CLASS ZCL_ABAPGIT_OBJECT_TABL IMPLEMENTATION.
lv_name = ms_item-obj_name.
io_xml->read( EXPORTING iv_name = 'I18N_LANGS'
ii_xml->read( EXPORTING iv_name = 'I18N_LANGS'
CHANGING cg_data = lt_i18n_langs ).
io_xml->read( EXPORTING iv_name = 'DD02_TEXTS'
ii_xml->read( EXPORTING iv_name = 'DD02_TEXTS'
CHANGING cg_data = lt_dd02_texts ).
zcl_abapgit_lxe_texts=>trim_saplangu_by_iso(
EXPORTING it_iso_filter = ii_xml->i18n_params( )-translation_languages
CHANGING ct_sap_langs = lt_i18n_langs ).
SORT lt_i18n_langs.
SORT lt_dd02_texts BY ddlanguage. " Optimization
@ -547,7 +551,7 @@ CLASS ZCL_ABAPGIT_OBJECT_TABL IMPLEMENTATION.
FIELD-SYMBOLS: <lv_lang> LIKE LINE OF lt_i18n_langs,
<ls_dd02_text> LIKE LINE OF lt_dd02_texts.
IF io_xml->i18n_params( )-main_language_only = abap_true.
IF ii_xml->i18n_params( )-main_language_only = abap_true.
RETURN.
ENDIF.
@ -555,6 +559,11 @@ CLASS ZCL_ABAPGIT_OBJECT_TABL IMPLEMENTATION.
" Collect additional languages, skip main lang - it was serialized already
lt_language_filter = zcl_abapgit_factory=>get_environment( )->get_system_language_filter( ).
zcl_abapgit_lxe_texts=>add_iso_langs_to_lang_filter(
EXPORTING it_iso_filter = ii_xml->i18n_params( )-translation_languages
CHANGING ct_language_filter = lt_language_filter ).
SELECT DISTINCT ddlanguage AS langu INTO TABLE lt_i18n_langs
FROM dd02v
WHERE tabname = lv_name
@ -586,10 +595,10 @@ CLASS ZCL_ABAPGIT_OBJECT_TABL IMPLEMENTATION.
SORT lt_dd02_texts BY ddlanguage ASCENDING.
IF lines( lt_i18n_langs ) > 0.
io_xml->add( iv_name = 'I18N_LANGS'
ii_xml->add( iv_name = 'I18N_LANGS'
ig_data = lt_i18n_langs ).
io_xml->add( iv_name = 'DD02_TEXTS'
ii_xml->add( iv_name = 'DD02_TEXTS'
ig_data = lt_dd02_texts ).
ENDIF.
@ -821,9 +830,9 @@ CLASS ZCL_ABAPGIT_OBJECT_TABL IMPLEMENTATION.
deserialize_indexes( io_xml ).
IF io_xml->i18n_params( )-translation_languages IS INITIAL.
IF io_xml->i18n_params( )-translation_languages IS INITIAL OR io_xml->i18n_params( )-use_lxe = abap_false.
deserialize_texts(
io_xml = io_xml
ii_xml = io_xml
is_dd02v = ls_dd02v ).
ELSE.
deserialize_lxe_texts( io_xml ).
@ -1056,7 +1065,7 @@ CLASS ZCL_ABAPGIT_OBJECT_TABL IMPLEMENTATION.
io_xml->add( iv_name = 'DD36M'
ig_data = lt_dd36m ).
IF io_xml->i18n_params( )-translation_languages IS INITIAL.
IF io_xml->i18n_params( )-translation_languages IS INITIAL OR io_xml->i18n_params( )-use_lxe = abap_false.
serialize_texts( io_xml ).
ELSE.
serialize_lxe_texts( io_xml ).

View File

@ -76,12 +76,12 @@ CLASS zcl_abapgit_object_tran DEFINITION
!cg_value TYPE any .
METHODS serialize_texts
IMPORTING
!io_xml TYPE REF TO zif_abapgit_xml_output
!ii_xml TYPE REF TO zif_abapgit_xml_output
RAISING
zcx_abapgit_exception .
METHODS deserialize_texts
IMPORTING
!io_xml TYPE REF TO zif_abapgit_xml_input
!ii_xml TYPE REF TO zif_abapgit_xml_input
RAISING
zcx_abapgit_exception .
METHODS deserialize_oo_transaction
@ -346,11 +346,17 @@ CLASS ZCL_ABAPGIT_OBJECT_TRAN IMPLEMENTATION.
FIELD-SYMBOLS <ls_tpool> LIKE LINE OF lt_tpool_i18n.
" Read XML-files data
io_xml->read( EXPORTING iv_name = 'I18N_TPOOL'
ii_xml->read( EXPORTING iv_name = 'I18N_TPOOL'
CHANGING cg_data = lt_tpool_i18n ).
zcl_abapgit_lxe_texts=>trim_tab_w_saplang_by_iso(
EXPORTING
it_iso_filter = ii_xml->i18n_params( )-translation_languages
iv_lang_field_name = 'SPRSL'
CHANGING
ct_tab = lt_tpool_i18n ).
" Force t-code name (security reasons)
LOOP AT lt_tpool_i18n ASSIGNING <ls_tpool>.
<ls_tpool>-tcode = ms_item-obj_name.
@ -396,7 +402,7 @@ CLASS ZCL_ABAPGIT_OBJECT_TRAN IMPLEMENTATION.
DATA lt_tpool_i18n TYPE TABLE OF tstct.
IF io_xml->i18n_params( )-main_language_only = abap_true.
IF ii_xml->i18n_params( )-main_language_only = abap_true.
RETURN.
ENDIF.
@ -408,9 +414,16 @@ CLASS ZCL_ABAPGIT_OBJECT_TRAN IMPLEMENTATION.
WHERE sprsl <> mv_language
AND tcode = ms_item-obj_name ##TOO_MANY_ITAB_FIELDS. "#EC CI_GENBUFF
zcl_abapgit_lxe_texts=>trim_tab_w_saplang_by_iso(
EXPORTING
it_iso_filter = ii_xml->i18n_params( )-translation_languages
iv_lang_field_name = 'SPRSL'
CHANGING
ct_tab = lt_tpool_i18n ).
IF lines( lt_tpool_i18n ) > 0.
SORT lt_tpool_i18n BY sprsl ASCENDING.
io_xml->add( iv_name = 'I18N_TPOOL'
ii_xml->add( iv_name = 'I18N_TPOOL'
ig_data = lt_tpool_i18n ).
ENDIF.
@ -765,7 +778,7 @@ CLASS ZCL_ABAPGIT_OBJECT_TRAN IMPLEMENTATION.
it_authorizations = lt_tstca ).
ENDIF.
IF io_xml->i18n_params( )-translation_languages IS INITIAL.
IF io_xml->i18n_params( )-translation_languages IS INITIAL OR io_xml->i18n_params( )-use_lxe = abap_false.
deserialize_texts( io_xml ).
ELSE.
deserialize_lxe_texts( io_xml ).
@ -895,7 +908,7 @@ CLASS ZCL_ABAPGIT_OBJECT_TRAN IMPLEMENTATION.
io_xml->add( iv_name = 'AUTHORIZATIONS'
ig_data = lt_tstca ).
IF io_xml->i18n_params( )-translation_languages IS INITIAL.
IF io_xml->i18n_params( )-translation_languages IS INITIAL OR io_xml->i18n_params( )-use_lxe = abap_false.
serialize_texts( io_xml ).
ELSE.
serialize_lxe_texts( io_xml ).

View File

@ -48,13 +48,13 @@ CLASS zcl_abapgit_object_view DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
serialize_texts
IMPORTING
io_xml TYPE REF TO zif_abapgit_xml_output
ii_xml TYPE REF TO zif_abapgit_xml_output
RAISING
zcx_abapgit_exception,
deserialize_texts
IMPORTING
io_xml TYPE REF TO zif_abapgit_xml_input
ii_xml TYPE REF TO zif_abapgit_xml_input
is_dd25v TYPE dd25v
RAISING
zcx_abapgit_exception.
@ -80,12 +80,16 @@ CLASS ZCL_ABAPGIT_OBJECT_VIEW IMPLEMENTATION.
lv_name = ms_item-obj_name.
io_xml->read( EXPORTING iv_name = 'I18N_LANGS'
ii_xml->read( EXPORTING iv_name = 'I18N_LANGS'
CHANGING cg_data = lt_i18n_langs ).
io_xml->read( EXPORTING iv_name = 'DD25_TEXTS'
ii_xml->read( EXPORTING iv_name = 'DD25_TEXTS'
CHANGING cg_data = lt_dd25_texts ).
zcl_abapgit_lxe_texts=>trim_saplangu_by_iso(
EXPORTING it_iso_filter = ii_xml->i18n_params( )-translation_languages
CHANGING ct_sap_langs = lt_i18n_langs ).
SORT lt_i18n_langs.
SORT lt_dd25_texts BY ddlanguage.
@ -161,12 +165,17 @@ CLASS ZCL_ABAPGIT_OBJECT_VIEW IMPLEMENTATION.
<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.
IF ii_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( ).
zcl_abapgit_lxe_texts=>add_iso_langs_to_lang_filter(
EXPORTING it_iso_filter = ii_xml->i18n_params( )-translation_languages
CHANGING ct_language_filter = lt_language_filter ).
SELECT DISTINCT ddlanguage AS langu INTO TABLE lt_i18n_langs
FROM dd25v
WHERE viewname = ms_item-obj_name
@ -202,10 +211,10 @@ CLASS ZCL_ABAPGIT_OBJECT_VIEW IMPLEMENTATION.
SORT lt_dd25_texts BY ddlanguage ASCENDING.
IF lines( lt_i18n_langs ) > 0.
io_xml->add( iv_name = 'I18N_LANGS'
ii_xml->add( iv_name = 'I18N_LANGS'
ig_data = lt_i18n_langs ).
io_xml->add( iv_name = 'DD25_TEXTS'
ii_xml->add( iv_name = 'DD25_TEXTS'
ig_data = lt_dd25_texts ).
ENDIF.
@ -299,9 +308,9 @@ CLASS ZCL_ABAPGIT_OBJECT_VIEW IMPLEMENTATION.
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
IF io_xml->i18n_params( )-translation_languages IS INITIAL.
IF io_xml->i18n_params( )-translation_languages IS INITIAL OR io_xml->i18n_params( )-use_lxe = abap_false.
deserialize_texts(
io_xml = io_xml
ii_xml = io_xml
is_dd25v = ls_dd25v ).
ELSE.
deserialize_lxe_texts( io_xml ).
@ -452,7 +461,7 @@ CLASS ZCL_ABAPGIT_OBJECT_VIEW IMPLEMENTATION.
io_xml->add( ig_data = lt_dd28v
iv_name = 'DD28V_TABLE' ).
IF io_xml->i18n_params( )-translation_languages IS INITIAL.
IF io_xml->i18n_params( )-translation_languages IS INITIAL OR io_xml->i18n_params( )-use_lxe = abap_false.
serialize_texts( io_xml ).
ELSE.
serialize_lxe_texts( io_xml ).

View File

@ -18,6 +18,7 @@ CLASS zcl_abapgit_objects DEFINITION
!iv_language TYPE spras
!iv_main_language_only TYPE abap_bool DEFAULT abap_false
!it_translation_langs TYPE zif_abapgit_definitions=>ty_languages OPTIONAL
!iv_use_lxe TYPE abap_bool DEFAULT abap_false
RETURNING
VALUE(rs_files_and_item) TYPE ty_serialization
RAISING
@ -196,7 +197,7 @@ ENDCLASS.
CLASS zcl_abapgit_objects IMPLEMENTATION.
CLASS ZCL_ABAPGIT_OBJECTS IMPLEMENTATION.
METHOD changed_by.
@ -867,8 +868,11 @@ CLASS zcl_abapgit_objects IMPLEMENTATION.
METHOD determine_i18n_params.
" TODO: unify with ZCL_ABAPGIT_SERIALIZE=>DETERMINE_I18N_PARAMS, same code
IF io_dot IS BOUND.
rs_i18n_params-main_language = io_dot->get_main_language( ).
rs_i18n_params-use_lxe = io_dot->use_lxe( ).
rs_i18n_params-main_language_only = iv_main_language_only.
rs_i18n_params-translation_languages = zcl_abapgit_lxe_texts=>get_translation_languages(
iv_main_language = io_dot->get_main_language( )
@ -1116,6 +1120,7 @@ CLASS zcl_abapgit_objects IMPLEMENTATION.
ls_i18n_params-main_language = iv_language.
ls_i18n_params-main_language_only = iv_main_language_only.
ls_i18n_params-translation_languages = it_translation_langs.
ls_i18n_params-use_lxe = iv_use_lxe.
li_xml->i18n_params( ls_i18n_params ).

View File

@ -94,7 +94,7 @@ ENDCLASS.
CLASS zcl_abapgit_objects_super IMPLEMENTATION.
CLASS ZCL_ABAPGIT_OBJECTS_SUPER IMPLEMENTATION.
METHOD constructor.
@ -303,6 +303,7 @@ CLASS zcl_abapgit_objects_super IMPLEMENTATION.
METHOD serialize_lxe_texts.
IF ii_xml->i18n_params( )-main_language_only = abap_true OR
ii_xml->i18n_params( )-use_lxe = abap_false OR
ii_xml->i18n_params( )-translation_languages IS INITIAL.
RETURN.
ENDIF.

View File

@ -74,6 +74,11 @@ CLASS zcl_abapgit_dot_abapgit DEFINITION
VALUE(rs_signature) TYPE zif_abapgit_git_definitions=>ty_file_signature
RAISING
zcx_abapgit_exception .
METHODS use_lxe
IMPORTING
iv_yes TYPE abap_bool DEFAULT abap_undefined
RETURNING
VALUE(rv_yes) TYPE abap_bool.
METHODS get_requirements
RETURNING
VALUE(rt_requirements) TYPE zif_abapgit_dot_abapgit=>ty_requirement_tt .
@ -101,7 +106,7 @@ ENDCLASS.
CLASS zcl_abapgit_dot_abapgit IMPLEMENTATION.
CLASS ZCL_ABAPGIT_DOT_ABAPGIT IMPLEMENTATION.
METHOD add_ignore.
@ -339,4 +344,15 @@ CLASS zcl_abapgit_dot_abapgit IMPLEMENTATION.
ASSERT sy-subrc = 0.
ENDMETHOD.
METHOD use_lxe.
IF iv_yes <> abap_undefined.
ms_data-use_lxe = iv_yes.
ENDIF.
rv_yes = ms_data-use_lxe.
ENDMETHOD.
ENDCLASS.

View File

@ -13,6 +13,7 @@ INTERFACE zif_abapgit_dot_abapgit PUBLIC.
BEGIN OF ty_dot_abapgit,
master_language TYPE spras,
i18n_languages TYPE zif_abapgit_definitions=>ty_languages,
use_lxe TYPE abap_bool,
starting_folder TYPE string,
folder_logic TYPE string,
ignore TYPE STANDARD TABLE OF string WITH DEFAULT KEY,

View File

@ -30,6 +30,7 @@ CLASS zcl_abapgit_gui_page_sett_repo DEFINITION
dot TYPE string VALUE 'dot',
main_language TYPE string VALUE 'main_language',
i18n_langs TYPE string VALUE 'i18n_langs',
use_lxe TYPE string VALUE 'use_lxe',
starting_folder TYPE string VALUE 'starting_folder',
folder_logic TYPE string VALUE 'folder_logic',
ignore TYPE string VALUE 'ignore',
@ -125,8 +126,12 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_SETT_REPO IMPLEMENTATION.
iv_readonly = abap_true
)->text(
iv_name = c_id-i18n_langs
iv_label = 'Serialize Translations (experimental LXE approach)'
iv_label = 'Serialize Translations for These Languages'
iv_hint = 'Comma-separate 2-letter ISO language codes e.g. "DE,ES,..." - should not include main language'
)->checkbox(
iv_name = c_id-use_lxe
iv_label = 'Use experimental LXE approach for translations'
iv_hint = 'It''s mandatory to specify the list of languages above in addition to this setting'
)->radio(
iv_name = c_id-folder_logic
iv_default_value = zif_abapgit_dot_abapgit=>c_folder_logic-prefix
@ -211,6 +216,9 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_SETT_REPO IMPLEMENTATION.
mo_form_data->set(
iv_key = c_id-i18n_langs
iv_val = zcl_abapgit_lxe_texts=>convert_table_to_lang_string( lo_dot->get_i18n_languages( ) ) ).
mo_form_data->set(
iv_key = c_id-use_lxe
iv_val = lo_dot->use_lxe( ) ).
mo_form_data->set(
iv_key = c_id-folder_logic
iv_val = ls_dot-folder_logic ).
@ -295,6 +303,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_SETT_REPO IMPLEMENTATION.
zcl_abapgit_lxe_texts=>convert_lang_string_to_table(
iv_langs = mo_form_data->get( c_id-i18n_langs )
iv_skip_main_language = lo_dot->get_main_language( ) ) ).
lo_dot->use_lxe( boolc( mo_form_data->get( c_id-use_lxe ) = 'X' ) ).
" Remove all ignores
lt_ignore = lo_dot->get_data( )-ignore.
@ -342,6 +351,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_SETT_REPO IMPLEMENTATION.
METHOD validate_form.
DATA:
lt_lang_list TYPE zif_abapgit_definitions=>ty_languages,
lv_folder TYPE string,
lv_len TYPE i,
lv_component TYPE zif_abapgit_dot_abapgit=>ty_requirement-component,
@ -395,6 +405,15 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_SETT_REPO IMPLEMENTATION.
iv_val = lx_exception->get_text( ) ).
ENDTRY.
lt_lang_list = zcl_abapgit_lxe_texts=>convert_lang_string_to_table(
iv_langs = io_form_data->get( c_id-i18n_langs )
iv_skip_main_language = mo_repo->get_dot_abapgit( )->get_main_language( ) ).
IF io_form_data->get( c_id-use_lxe ) = abap_true AND lt_lang_list IS INITIAL.
ro_validation_log->set(
iv_key = c_id-i18n_langs
iv_val = 'LXE approach requires a non-empy list of languages' ).
ENDIF.
ENDMETHOD.

View File

@ -454,6 +454,8 @@ INTERFACE zif_abapgit_definitions
skip TYPE ty_method VALUE '?',
END OF c_method .
TYPES:
ty_sap_langu_tab TYPE STANDARD TABLE OF langu WITH DEFAULT KEY.
TYPES:
ty_languages TYPE STANDARD TABLE OF laiso WITH DEFAULT KEY.
TYPES:
@ -461,6 +463,7 @@ INTERFACE zif_abapgit_definitions
main_language TYPE sy-langu,
main_language_only TYPE abap_bool,
translation_languages TYPE ty_languages,
use_lxe TYPE abap_bool,
END OF ty_i18n_params .
TYPES ty_trrngtrkor_tt TYPE RANGE OF trkorr.
ENDINTERFACE.

View File

@ -90,6 +90,7 @@
{"object": "ZCL_ABAPGIT_SERIALIZE", "class": "ltcl_serialize", "method": "unsupported", "note": "Void type: KO100"},
{"object": "ZCL_ABAPGIT_SERIALIZE", "class": "ltcl_serialize", "method": "ignored", "note": "Void type: KO100"},
{"object": "ZCL_ABAPGIT_SERIALIZE", "class": "ltcl_i18n", "method": "test", "note": "Void type: DD02V"},
{"object": "ZCL_ABAPGIT_SERIALIZE", "class": "ltcl_determine_max_threads", "method": "determine_max_threads", "note": "??"},
{"object": "ZCL_ABAPGIT_FILE_STATUS", "class": "ltcl_calculate_status", "method": "deleted_remote", "note": "READ TABLE subrc 4 vs subrc 8"},
{"object": "ZCL_ABAPGIT_FILE_STATUS", "class": "ltcl_calculate_status", "method": "complete", "note": "READ TABLE subrc 4 vs subrc 8"},