From c0ad1a96d002e432b73092d08ecc5015ffda9289 Mon Sep 17 00:00:00 2001 From: Alexander Tsybulsky Date: Tue, 2 Nov 2021 07:10:03 +0200 Subject: [PATCH] Better multi-lang class tpool handling (#5074) * better multilang class tpool handling * dont save lang list on empty clas docu Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com> Co-authored-by: Lars Hvam --- src/objects/zcl_abapgit_object_clas.clas.abap | 44 ++++++++++++++----- src/zcx_abapgit_exception.clas.abap | 2 +- 2 files changed, 33 insertions(+), 13 deletions(-) diff --git a/src/objects/zcl_abapgit_object_clas.clas.abap b/src/objects/zcl_abapgit_object_clas.clas.abap index 4dd8fad3b..d276c5677 100644 --- a/src/objects/zcl_abapgit_object_clas.clas.abap +++ b/src/objects/zcl_abapgit_object_clas.clas.abap @@ -93,7 +93,7 @@ ENDCLASS. -CLASS zcl_abapgit_object_clas IMPLEMENTATION. +CLASS ZCL_ABAPGIT_OBJECT_CLAS IMPLEMENTATION. METHOD constructor. @@ -381,15 +381,17 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION. ENDIF. LOOP AT it_langu_additional INTO lv_langu. - CLEAR: ls_i18n_lines. lt_lines = mi_object_oriented_object_fct->read_documentation( iv_class_name = iv_clsname iv_language = lv_langu ). - ls_i18n_lines-language = lv_langu. - ls_i18n_lines-lines = lt_lines. - INSERT ls_i18n_lines INTO TABLE lt_i18n_lines. + IF lines( lt_lines ) > 0. + CLEAR ls_i18n_lines. + ls_i18n_lines-language = lv_langu. + ls_i18n_lines-lines = lt_lines. + INSERT ls_i18n_lines INTO TABLE lt_i18n_lines. + ENDIF. ENDLOOP. @@ -411,30 +413,48 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION. METHOD serialize_tpool. DATA: lt_tpool TYPE textpool_table, + lv_index TYPE i, lv_langu TYPE sy-langu, lt_i18n_tpool TYPE zif_abapgit_lang_definitions=>ty_i18n_tpools, ls_i18n_tpool TYPE zif_abapgit_lang_definitions=>ty_i18n_tpool. + FIELD-SYMBOLS LIKE LINE OF lt_tpool. + + DATA lt_tpool_main LIKE SORTED TABLE OF WITH UNIQUE KEY id key. + lt_tpool = mi_object_oriented_object_fct->read_text_pool( iv_class_name = iv_clsname iv_language = mv_language ). ii_xml->add( iv_name = 'TPOOL' ig_data = add_tpool( lt_tpool ) ). - IF ii_xml->i18n_params( )-main_language_only = abap_true. + IF ii_xml->i18n_params( )-main_language_only = abap_true OR lines( lt_tpool ) = 0. RETURN. ENDIF. + lt_tpool_main = lt_tpool. + LOOP AT it_langu_additional INTO lv_langu. - CLEAR: ls_i18n_tpool. lt_tpool = mi_object_oriented_object_fct->read_text_pool( - iv_class_name = iv_clsname - iv_language = lv_langu ). + iv_class_name = iv_clsname + iv_language = lv_langu ). - ls_i18n_tpool-language = lv_langu. - ls_i18n_tpool-textpool = add_tpool( lt_tpool ). - INSERT ls_i18n_tpool INTO TABLE lt_i18n_tpool. + LOOP AT lt_tpool ASSIGNING . + lv_index = sy-tabix. + READ TABLE lt_tpool_main WITH KEY id = -id key = -key + TRANSPORTING NO FIELDS. + IF sy-subrc <> 0. + DELETE lt_tpool INDEX lv_index. + ENDIF. + ENDLOOP. + + IF lines( lt_tpool ) > 0. + CLEAR ls_i18n_tpool. + ls_i18n_tpool-language = lv_langu. + ls_i18n_tpool-textpool = add_tpool( lt_tpool ). + INSERT ls_i18n_tpool INTO TABLE lt_i18n_tpool. + ENDIF. ENDLOOP. diff --git a/src/zcx_abapgit_exception.clas.abap b/src/zcx_abapgit_exception.clas.abap index 1f5973729..623da8f34 100644 --- a/src/zcx_abapgit_exception.clas.abap +++ b/src/zcx_abapgit_exception.clas.abap @@ -114,7 +114,7 @@ ENDCLASS. -CLASS zcx_abapgit_exception IMPLEMENTATION. +CLASS ZCX_ABAPGIT_EXCEPTION IMPLEMENTATION. METHOD constructor ##ADT_SUPPRESS_GENERATION.