diff --git a/src/objects/oo/zcl_abapgit_oo_base.clas.abap b/src/objects/oo/zcl_abapgit_oo_base.clas.abap index 4b081cd6e..de6a4715c 100644 --- a/src/objects/oo/zcl_abapgit_oo_base.clas.abap +++ b/src/objects/oo/zcl_abapgit_oo_base.clas.abap @@ -21,7 +21,7 @@ ENDCLASS. -CLASS zcl_abapgit_oo_base IMPLEMENTATION. +CLASS ZCL_ABAPGIT_OO_BASE IMPLEMENTATION. METHOD convert_attrib_to_vseoattrib. @@ -51,7 +51,7 @@ CLASS zcl_abapgit_oo_base IMPLEMENTATION. METHOD zif_abapgit_oo_object_fnc~create_documentation. CALL FUNCTION 'DOCU_UPD' EXPORTING - id = 'CL' + id = iv_id langu = iv_language object = iv_object_name no_masterlang = iv_no_masterlang @@ -66,10 +66,21 @@ CLASS zcl_abapgit_oo_base IMPLEMENTATION. ENDIF. ENDMETHOD. + + METHOD zif_abapgit_oo_object_fnc~create_sotr. + ASSERT 0 = 1. "Subclass responsibility + ENDMETHOD. + + + METHOD zif_abapgit_oo_object_fnc~delete. + ASSERT 0 = 1. "Subclass responsibility + ENDMETHOD. + + METHOD zif_abapgit_oo_object_fnc~delete_documentation. CALL FUNCTION 'DOCU_DEL' EXPORTING - id = 'CL' + id = iv_id langu = iv_language object = iv_object_name typ = 'E' @@ -82,16 +93,6 @@ CLASS zcl_abapgit_oo_base IMPLEMENTATION. ENDMETHOD. - METHOD zif_abapgit_oo_object_fnc~create_sotr. - ASSERT 0 = 1. "Subclass responsibility - ENDMETHOD. - - - METHOD zif_abapgit_oo_object_fnc~delete. - ASSERT 0 = 1. "Subclass responsibility - ENDMETHOD. - - METHOD zif_abapgit_oo_object_fnc~deserialize_source. ASSERT 0 = 1. "Subclass responsibility ENDMETHOD. @@ -147,14 +148,14 @@ CLASS zcl_abapgit_oo_base IMPLEMENTATION. IF iv_language IS INITIAL. " load all languages SELECT * FROM seocompotx INTO TABLE rt_descriptions - WHERE clsname = iv_obejct_name + WHERE clsname = iv_object_name AND descript <> '' ORDER BY PRIMARY KEY. "#EC CI_SUBRC ELSE. " load main language SELECT * FROM seocompotx INTO TABLE rt_descriptions - WHERE clsname = iv_obejct_name - AND langu = iv_language + WHERE clsname = iv_object_name + AND langu = iv_language AND descript <> '' ORDER BY PRIMARY KEY. "#EC CI_SUBRC ENDIF. @@ -163,16 +164,13 @@ CLASS zcl_abapgit_oo_base IMPLEMENTATION. METHOD zif_abapgit_oo_object_fnc~read_documentation. DATA: lv_state TYPE dokstate, - lv_object TYPE dokhl-object, lt_lines TYPE tlinetab. - lv_object = iv_class_name. - CALL FUNCTION 'DOCU_GET' EXPORTING - id = 'CL' + id = iv_id langu = iv_language - object = lv_object + object = iv_object_name version_active_or_last = space " retrieve active version IMPORTING dokstate = lv_state diff --git a/src/objects/oo/zif_abapgit_oo_object_fnc.intf.abap b/src/objects/oo/zif_abapgit_oo_object_fnc.intf.abap index 6bec72992..57bb48ecc 100644 --- a/src/objects/oo/zif_abapgit_oo_object_fnc.intf.abap +++ b/src/objects/oo/zif_abapgit_oo_object_fnc.intf.abap @@ -69,6 +69,7 @@ INTERFACE zif_abapgit_oo_object_fnc PUBLIC. create_documentation IMPORTING it_lines TYPE tlinetab + iv_id TYPE dokhl-id iv_object_name TYPE dokhl-object iv_language TYPE spras iv_no_masterlang TYPE abap_bool OPTIONAL @@ -76,6 +77,7 @@ INTERFACE zif_abapgit_oo_object_fnc PUBLIC. zcx_abapgit_exception, delete_documentation IMPORTING + iv_id TYPE dokhl-id iv_object_name TYPE dokhl-object iv_language TYPE spras RAISING @@ -126,7 +128,8 @@ INTERFACE zif_abapgit_oo_object_fnc PUBLIC. VALUE(rt_text_pool) TYPE textpool_table, read_documentation IMPORTING - iv_class_name TYPE seoclsname + iv_id TYPE dokhl-id + iv_object_name TYPE dokhl-object iv_language TYPE spras RETURNING VALUE(rt_lines) TYPE tlinetab, @@ -138,7 +141,7 @@ INTERFACE zif_abapgit_oo_object_fnc PUBLIC. zcx_abapgit_exception, read_descriptions IMPORTING - iv_obejct_name TYPE seoclsname + iv_object_name TYPE seoclsname iv_language TYPE spras OPTIONAL RETURNING VALUE(rt_descriptions) TYPE ty_seocompotx_tt, diff --git a/src/objects/zcl_abapgit_object_clas.clas.abap b/src/objects/zcl_abapgit_object_clas.clas.abap index d74a98dfb..8bf627ea9 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. @@ -192,6 +192,7 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION. IF lines( lt_lines ) = 0. mi_object_oriented_object_fct->delete_documentation( + iv_id = 'CL' iv_object_name = lv_object iv_language = mv_language ). RETURN. @@ -199,6 +200,7 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION. mi_object_oriented_object_fct->create_documentation( it_lines = lt_lines + iv_id = 'CL' iv_object_name = lv_object iv_language = mv_language ). @@ -208,6 +210,7 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION. LOOP AT lt_i18n_lines INTO ls_i18n_lines. mi_object_oriented_object_fct->create_documentation( it_lines = ls_i18n_lines-lines + iv_id = 'CL' iv_object_name = lv_object iv_language = ls_i18n_lines-language iv_no_masterlang = abap_true ). @@ -351,8 +354,8 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION. ENDIF. lt_descriptions = mi_object_oriented_object_fct->read_descriptions( - iv_obejct_name = iv_clsname - iv_language = lv_language ). + iv_object_name = iv_clsname + iv_language = lv_language ). IF lines( lt_descriptions ) = 0. RETURN. @@ -367,13 +370,17 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION. METHOD serialize_docu. DATA: lt_lines TYPE tlinetab, + lv_object TYPE dokhl-object, lv_langu TYPE sy-langu, lt_i18n_lines TYPE zif_abapgit_lang_definitions=>ty_i18n_lines, ls_i18n_lines TYPE zif_abapgit_lang_definitions=>ty_i18n_line. + lv_object = iv_clsname. + lt_lines = mi_object_oriented_object_fct->read_documentation( - iv_class_name = iv_clsname - iv_language = mv_language ). + iv_id = 'CL' + iv_object_name = lv_object + iv_language = mv_language ). IF lines( lt_lines ) > 0. ii_xml->add( iv_name = 'LINES' ig_data = lt_lines ). @@ -386,8 +393,9 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION. LOOP AT it_langu_additional INTO lv_langu. lt_lines = mi_object_oriented_object_fct->read_documentation( - iv_class_name = iv_clsname - iv_language = lv_langu ). + iv_id = 'CL' + iv_object_name = lv_object + iv_language = lv_langu ). IF lines( lt_lines ) > 0. CLEAR ls_i18n_lines. @@ -530,6 +538,13 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION. serialize_sotr( ii_xml ). ENDIF. + SELECT DISTINCT langu + INTO TABLE lt_langu_additional + FROM dokhl + WHERE id = 'CL' + AND object = ls_clskey-clsname + AND langu <> mv_language. + serialize_docu( ii_xml = ii_xml iv_clsname = ls_clskey-clsname it_langu_additional = lt_langu_additional ). diff --git a/src/objects/zcl_abapgit_object_intf.clas.abap b/src/objects/zcl_abapgit_object_intf.clas.abap index b987d66f1..edb9de49f 100644 --- a/src/objects/zcl_abapgit_object_intf.clas.abap +++ b/src/objects/zcl_abapgit_object_intf.clas.abap @@ -24,6 +24,19 @@ CLASS zcl_abapgit_object_intf DEFINITION PUBLIC FINAL INHERITING FROM zcl_abapgi !ii_xml TYPE REF TO zif_abapgit_xml_input RAISING zcx_abapgit_exception . + METHODS serialize_docu + IMPORTING + !ii_xml TYPE REF TO zif_abapgit_xml_output + !it_langu_additional TYPE zif_abapgit_lang_definitions=>ty_langus OPTIONAL + !iv_clsname TYPE seoclsname + RAISING + zcx_abapgit_exception. + METHODS serialize_descr + IMPORTING + !ii_xml TYPE REF TO zif_abapgit_xml_output + !iv_clsname TYPE seoclsname + RAISING + zcx_abapgit_exception. PRIVATE SECTION. DATA mi_object_oriented_object_fct TYPE REF TO zif_abapgit_oo_object_fnc . @@ -37,7 +50,7 @@ ENDCLASS. -CLASS zcl_abapgit_object_intf IMPLEMENTATION. +CLASS ZCL_ABAPGIT_OBJECT_INTF IMPLEMENTATION. METHOD constructor. @@ -83,8 +96,10 @@ CLASS zcl_abapgit_object_intf IMPLEMENTATION. METHOD deserialize_docu. - DATA: lt_lines TYPE tlinetab, - lv_object TYPE dokhl-object. + DATA: lt_lines TYPE tlinetab, + lv_object TYPE dokhl-object, + lt_i18n_lines TYPE zif_abapgit_lang_definitions=>ty_i18n_lines, + ls_i18n_lines TYPE zif_abapgit_lang_definitions=>ty_i18n_line. ii_xml->read( EXPORTING iv_name = 'LINES' CHANGING cg_data = lt_lines ). @@ -93,6 +108,7 @@ CLASS zcl_abapgit_object_intf IMPLEMENTATION. IF lines( lt_lines ) = 0. mi_object_oriented_object_fct->delete_documentation( + iv_id = 'IF' iv_object_name = lv_object iv_language = mv_language ). RETURN. @@ -100,8 +116,22 @@ CLASS zcl_abapgit_object_intf IMPLEMENTATION. mi_object_oriented_object_fct->create_documentation( it_lines = lt_lines + iv_id = 'IF' iv_object_name = lv_object iv_language = mv_language ). + + ii_xml->read( EXPORTING iv_name = 'I18N_LINES' + CHANGING cg_data = lt_i18n_lines ). + + LOOP AT lt_i18n_lines INTO ls_i18n_lines. + mi_object_oriented_object_fct->create_documentation( + it_lines = ls_i18n_lines-lines + iv_id = 'IF' + iv_object_name = lv_object + iv_language = ls_i18n_lines-language + iv_no_masterlang = abap_true ). + ENDLOOP. + ENDMETHOD. @@ -140,14 +170,82 @@ CLASS zcl_abapgit_object_intf IMPLEMENTATION. ENDMETHOD. - METHOD serialize_xml. - DATA: - lt_descriptions TYPE zif_abapgit_oo_object_fnc=>ty_seocompotx_tt, - ls_vseointerf TYPE vseointerf, - ls_clskey TYPE seoclskey, - lt_lines TYPE tlinetab, - lv_language TYPE spras. + METHOD serialize_descr. + DATA: lt_descriptions TYPE zif_abapgit_oo_object_fnc=>ty_seocompotx_tt, + lv_language TYPE spras. + + IF ii_xml->i18n_params( )-main_language_only = abap_true. + lv_language = mv_language. + ENDIF. + + lt_descriptions = mi_object_oriented_object_fct->read_descriptions( + iv_object_name = iv_clsname + iv_language = lv_language ). + + IF lines( lt_descriptions ) = 0. + RETURN. + ENDIF. + + ii_xml->add( iv_name = 'DESCRIPTIONS' + ig_data = lt_descriptions ). + + ENDMETHOD. + + + METHOD serialize_docu. + + DATA: lt_lines TYPE tlinetab, + lv_object TYPE dokhl-object, + lv_langu TYPE sy-langu, + lt_i18n_lines TYPE zif_abapgit_lang_definitions=>ty_i18n_lines, + ls_i18n_lines TYPE zif_abapgit_lang_definitions=>ty_i18n_line. + + lv_object = iv_clsname. + + lt_lines = mi_object_oriented_object_fct->read_documentation( + iv_id = 'IF' + iv_object_name = lv_object + iv_language = mv_language ). + IF lines( lt_lines ) > 0. + ii_xml->add( iv_name = 'LINES' + ig_data = lt_lines ). + ENDIF. + + IF ii_xml->i18n_params( )-main_language_only = abap_true. + RETURN. + ENDIF. + + LOOP AT it_langu_additional INTO lv_langu. + + lt_lines = mi_object_oriented_object_fct->read_documentation( + iv_id = 'IF' + iv_object_name = lv_object + iv_language = lv_langu ). + + 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. + + IF lines( lt_i18n_lines ) > 0. + ii_xml->add( iv_name = 'I18N_LINES' + ig_data = lt_i18n_lines ). + ENDIF. + + ENDMETHOD. + + + METHOD serialize_xml. + + DATA: + ls_vseointerf TYPE vseointerf, + ls_clskey TYPE seoclskey, + lt_langu_additional TYPE zif_abapgit_lang_definitions=>ty_langus. ls_clskey-clsname = ms_item-obj_name. @@ -166,26 +264,22 @@ CLASS zcl_abapgit_object_intf IMPLEMENTATION. io_xml->add( iv_name = 'VSEOINTERF' ig_data = ls_vseointerf ). - lt_lines = mi_object_oriented_object_fct->read_documentation( - iv_class_name = ls_clskey-clsname - iv_language = mv_language ). - IF lines( lt_lines ) > 0. - io_xml->add( iv_name = 'LINES' - ig_data = lt_lines ). - ENDIF. + " Select all active translations of documentation + " Skip main language - it was already serialized + SELECT DISTINCT langu + INTO TABLE lt_langu_additional + FROM dokhl + WHERE id = 'IF' + AND object = ls_clskey-clsname + AND langu <> mv_language. - IF io_xml->i18n_params( )-main_language_only = abap_true. - lv_language = mv_language. - ENDIF. + serialize_docu( ii_xml = io_xml + iv_clsname = ls_clskey-clsname + it_langu_additional = lt_langu_additional ). - lt_descriptions = mi_object_oriented_object_fct->read_descriptions( - iv_obejct_name = ls_clskey-clsname - iv_language = lv_language ). + serialize_descr( ii_xml = io_xml + iv_clsname = ls_clskey-clsname ). - IF lines( lt_descriptions ) > 0. - io_xml->add( iv_name = 'DESCRIPTIONS' - ig_data = lt_descriptions ). - ENDIF. ENDMETHOD.