From d28dcaef29ebf04631864415c6873fb2eaf6acef Mon Sep 17 00:00:00 2001 From: Albert Mink Date: Tue, 20 Aug 2024 15:13:28 +0200 Subject: [PATCH] Language conversion sap2/sap1 (#7017) Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com> --- src/utils/zcl_abapgit_convert.clas.abap | 50 +----- .../zcl_abapgit_convert.clas.locals_imp.abap | 163 ++++++++++++++++++ 2 files changed, 171 insertions(+), 42 deletions(-) diff --git a/src/utils/zcl_abapgit_convert.clas.abap b/src/utils/zcl_abapgit_convert.clas.abap index 5d72adfdc..c395457e0 100644 --- a/src/utils/zcl_abapgit_convert.clas.abap +++ b/src/utils/zcl_abapgit_convert.clas.abap @@ -291,57 +291,23 @@ CLASS zcl_abapgit_convert IMPLEMENTATION. METHOD language_sap1_to_sap2. - DATA lv_class TYPE string. - TRY. - SELECT SINGLE languageisocode FROM ('I_LANGUAGE') - INTO re_lang_sap2 - WHERE language = im_lang_sap1. - IF sy-subrc <> 0. - RAISE no_assignment. - ENDIF. - CATCH cx_sy_dynamic_osql_error. - lv_class = 'CL_I18N_LANGUAGES'. - CALL METHOD (lv_class)=>sap1_to_sap2 - EXPORTING - im_lang_sap1 = im_lang_sap1 - RECEIVING - re_lang_sap2 = re_lang_sap2 - EXCEPTIONS - no_assignment = 1 - OTHERS = 2. - IF sy-subrc = 1. - RAISE no_assignment. - ENDIF. + re_lang_sap2 = lcl_bcp47_language_table=>sap1_to_sap2( im_lang_sap1 ). + CATCH zcx_abapgit_exception. + RAISE no_assignment. ENDTRY. + ENDMETHOD. METHOD language_sap2_to_sap1. - DATA lv_class TYPE string. - TRY. - SELECT SINGLE language FROM ('I_LANGUAGE') - INTO re_lang_sap1 - WHERE languageisocode = im_lang_sap2. - IF sy-subrc <> 0. - RAISE no_assignment. - ENDIF. - CATCH cx_sy_dynamic_osql_error. - lv_class = 'CL_I18N_LANGUAGES'. - CALL METHOD (lv_class)=>sap2_to_sap1 - EXPORTING - im_lang_sap2 = im_lang_sap2 - RECEIVING - re_lang_sap1 = re_lang_sap1 - EXCEPTIONS - no_assignment = 1 - OTHERS = 2. - IF sy-subrc = 1. - RAISE no_assignment. - ENDIF. + re_lang_sap1 = lcl_bcp47_language_table=>sap2_to_sap1( im_lang_sap2 ). + CATCH zcx_abapgit_exception. + RAISE no_assignment. ENDTRY. + ENDMETHOD. diff --git a/src/utils/zcl_abapgit_convert.clas.locals_imp.abap b/src/utils/zcl_abapgit_convert.clas.locals_imp.abap index af13d5816..a1ff32d52 100644 --- a/src/utils/zcl_abapgit_convert.clas.locals_imp.abap +++ b/src/utils/zcl_abapgit_convert.clas.locals_imp.abap @@ -121,11 +121,20 @@ CLASS lcl_bcp47_language_table DEFINITION CREATE PRIVATE. PUBLIC SECTION. TYPES: BEGIN OF ty_language_mapping, sap1_code TYPE sy-langu, + sap2_code TYPE laiso, bcp47_code TYPE string, END OF ty_language_mapping, ty_language_mappings TYPE STANDARD TABLE OF ty_language_mapping WITH DEFAULT KEY. CLASS-DATA gv_language_mappings TYPE ty_language_mappings. CLASS-METHODS: + sap1_to_sap2 + IMPORTING im_sap1 TYPE sy-langu + RETURNING VALUE(re_sap2) TYPE laiso + RAISING zcx_abapgit_exception, + sap2_to_sap1 + IMPORTING im_sap2 TYPE laiso + RETURNING VALUE(re_sap1) TYPE sy-langu + RAISING zcx_abapgit_exception, sap1_to_bcp47 IMPORTING im_sap1 TYPE sy-langu @@ -149,6 +158,7 @@ CLASS lcl_bcp47_language_table DEFINITION CREATE PRIVATE. fill_language_mapping IMPORTING im_sap1 TYPE string + im_sap2 TYPE string im_bcp47 TYPE string. ENDCLASS. @@ -191,6 +201,37 @@ CLASS lcl_bcp47_language_table IMPLEMENTATION. ENDIF. ENDMETHOD. + + METHOD sap1_to_sap2. + DATA lv_language_mapping TYPE ty_language_mapping. + + IF gv_language_mappings IS INITIAL. + fill_language_mappings( ). + ENDIF. + + READ TABLE gv_language_mappings WITH KEY sap1_code = im_sap1 INTO lv_language_mapping. + re_sap2 = lv_language_mapping-sap2_code. + + IF re_sap2 IS INITIAL. + zcx_abapgit_exception=>raise( |Could not convert SAP1 language code { im_sap1 } to SAP2 language code.| ). + ENDIF. + ENDMETHOD. + + METHOD sap2_to_sap1. + DATA lv_language_mapping TYPE ty_language_mapping. + + IF gv_language_mappings IS INITIAL. + fill_language_mappings( ). + ENDIF. + + READ TABLE gv_language_mappings WITH KEY sap2_code = im_sap2 INTO lv_language_mapping. + re_sap1 = lv_language_mapping-sap1_code. + + IF re_sap1 IS INITIAL. + zcx_abapgit_exception=>raise( |Could not map SAP2 language code { im_sap2 } to SAP1 language code.| ). + ENDIF. + ENDMETHOD. + METHOD fill_language_mapping. DATA lv_line TYPE ty_language_mapping. DATA lv_sap1 TYPE sy-langu. @@ -202,6 +243,7 @@ CLASS lcl_bcp47_language_table IMPLEMENTATION. ENDIF. lv_line-bcp47_code = im_bcp47. + lv_line-sap2_code = im_sap2. lv_line-sap1_code = lv_sap1. APPEND lv_line TO gv_language_mappings. @@ -217,366 +259,487 @@ CLASS lcl_bcp47_language_table IMPLEMENTATION. METHOD fill_language_mappings_1. fill_language_mapping( im_sap1 = 'a' + im_sap2 = 'AF' im_bcp47 = 'af' ). fill_language_mapping( im_sap1 = 'BF51' + im_sap2 = 'SQ' im_bcp47 = 'sq' ). fill_language_mapping( im_sap1 = 'BA15' + im_sap2 = 'EU' im_bcp47 = 'eu' ). fill_language_mapping( im_sap1 = 'B8F3' + im_sap2 = 'BS' im_bcp47 = 'bs' ). fill_language_mapping( im_sap1 = 'W' + im_sap2 = 'BG' im_bcp47 = 'bg' ). fill_language_mapping( im_sap1 = 'c' + im_sap2 = 'CA' im_bcp47 = 'ca' ). fill_language_mapping( im_sap1 = '1' + im_sap2 = 'ZH' im_bcp47 = 'zh' ). fill_language_mapping( im_sap1 = '1' + im_sap2 = 'ZH' im_bcp47 = 'zh-Hans' ). fill_language_mapping( im_sap1 = 'B343' + im_sap2 = '3C' im_bcp47 = 'zh-SG' ). fill_language_mapping( im_sap1 = 'M' + im_sap2 = 'ZF' im_bcp47 = 'zh-Hant' ). fill_language_mapping( im_sap1 = '6' + im_sap2 = 'HR' im_bcp47 = 'hr' ). fill_language_mapping( im_sap1 = 'C' + im_sap2 = 'CS' im_bcp47 = 'cs' ). fill_language_mapping( im_sap1 = 'K' + im_sap2 = 'DA' im_bcp47 = 'da' ). fill_language_mapping( im_sap1 = 'N' + im_sap2 = 'NL' im_bcp47 = 'nl' ). fill_language_mapping( im_sap1 = 'N' + im_sap2 = 'NL' im_bcp47 = 'nl-NL' ). fill_language_mapping( im_sap1 = 'B284' + im_sap2 = '1D' im_bcp47 = 'nl-BE' ). fill_language_mapping( im_sap1 = 'E' + im_sap2 = 'EN' im_bcp47 = 'en' ). fill_language_mapping( im_sap1 = 'E' + im_sap2 = 'EN' im_bcp47 = 'en-US' ). fill_language_mapping( im_sap1 = 'B46E' + im_sap2 = '6N' im_bcp47 = 'en-GB' ). fill_language_mapping( im_sap1 = 'B285' + im_sap2 = '1E' im_bcp47 = 'en-AU' ). fill_language_mapping( im_sap1 = 'B2E5' + im_sap2 = '2E' im_bcp47 = 'en-BZ' ). fill_language_mapping( im_sap1 = 'B345' + im_sap2 = '3E' im_bcp47 = 'en-CA' ). fill_language_mapping( im_sap1 = 'B405' + im_sap2 = '5E' im_bcp47 = 'en-HK' ). fill_language_mapping( im_sap1 = 'B465' + im_sap2 = '6E' im_bcp47 = 'en-IN' ). fill_language_mapping( im_sap1 = 'B4C5' + im_sap2 = '7E' im_bcp47 = 'en-ID' ). fill_language_mapping( im_sap1 = 'B525' + im_sap2 = '8E' im_bcp47 = 'en-IE' ). fill_language_mapping( im_sap1 = 'B585' + im_sap2 = '9E' im_bcp47 = 'en-JM' ). fill_language_mapping( im_sap1 = 'B225' + im_sap2 = '0E' im_bcp47 = 'en-MY' ). fill_language_mapping( im_sap1 = 'B28E' + im_sap2 = '1N' im_bcp47 = 'en-NZ' ). fill_language_mapping( im_sap1 = 'B2EE' + im_sap2 = '2N' im_bcp47 = 'en-PH' ). fill_language_mapping( im_sap1 = 'B34E' + im_sap2 = '3N' im_bcp47 = 'en-SG' ). fill_language_mapping( im_sap1 = 'B3AE' + im_sap2 = '4N' im_bcp47 = 'en-ZA' ). fill_language_mapping( im_sap1 = 'B40E' + im_sap2 = '5N' im_bcp47 = 'en-TT' ). fill_language_mapping( im_sap1 = 'B4CE' + im_sap2 = '7N' im_bcp47 = 'en-ZW' ). fill_language_mapping( im_sap1 = '9' + im_sap2 = 'ET' im_bcp47 = 'et' ). fill_language_mapping( im_sap1 = 'U' + im_sap2 = 'FI' im_bcp47 = 'fi' ). fill_language_mapping( im_sap1 = 'F' + im_sap2 = 'FR' im_bcp47 = 'fr' ). fill_language_mapping( im_sap1 = 'F' + im_sap2 = 'FR' im_bcp47 = 'fr-FR' ). fill_language_mapping( im_sap1 = 'B286' + im_sap2 = '1F' im_bcp47 = 'fr-BE' ). fill_language_mapping( im_sap1 = 'B2E6' + im_sap2 = '2F' im_bcp47 = 'fr-CM' ). ENDMETHOD. METHOD fill_language_mappings_2. fill_language_mapping( im_sap1 = 'B346' + im_sap2 = '3F' im_bcp47 = 'fr-CA' ). fill_language_mapping( im_sap1 = 'B3A6' + im_sap2 = '4F' im_bcp47 = 'fr-CG' ). fill_language_mapping( im_sap1 = 'B406' + im_sap2 = '5F' im_bcp47 = 'fr-CI' ). fill_language_mapping( im_sap1 = 'B466' + im_sap2 = '6F' im_bcp47 = 'fr-HT' ). fill_language_mapping( im_sap1 = 'B4C6' + im_sap2 = '7F' im_bcp47 = 'fr-LU' ). fill_language_mapping( im_sap1 = 'B526' + im_sap2 = '8F' im_bcp47 = 'fr-ML' ). fill_language_mapping( im_sap1 = 'B586' + im_sap2 = '9F' im_bcp47 = 'fr-MC' ). fill_language_mapping( im_sap1 = 'B288' + im_sap2 = '1H' im_bcp47 = 'fr-MA' ). fill_language_mapping( im_sap1 = 'B2E8' + im_sap2 = '2H' im_bcp47 = 'fr-RE' ). fill_language_mapping( im_sap1 = 'B348' + im_sap2 = '3H' im_bcp47 = 'fr-SN' ). fill_language_mapping( im_sap1 = 'B3A8' + im_sap2 = '4H' im_bcp47 = 'fr-CH' ). fill_language_mapping( im_sap1 = 'BAC4' + im_sap2 = 'GD' im_bcp47 = 'gd' ). fill_language_mapping( im_sap1 = 'BACC' + im_sap2 = 'GL' im_bcp47 = 'gl' ). fill_language_mapping( im_sap1 = 'D' + im_sap2 = 'DE' im_bcp47 = 'de' ). fill_language_mapping( im_sap1 = 'D' + im_sap2 = 'DE' im_bcp47 = 'de-DE' ). fill_language_mapping( im_sap1 = 'B287' + im_sap2 = '1G' im_bcp47 = 'de-AT' ). fill_language_mapping( im_sap1 = 'B2E7' + im_sap2 = '2G' im_bcp47 = 'de-LI' ). fill_language_mapping( im_sap1 = 'B347' + im_sap2 = '3G' im_bcp47 = 'de-LU' ). fill_language_mapping( im_sap1 = 'B3A7' + im_sap2 = '4G' im_bcp47 = 'de-CH' ). fill_language_mapping( im_sap1 = 'G' + im_sap2 = 'EL' im_bcp47 = 'el' ). fill_language_mapping( im_sap1 = 'B' + im_sap2 = 'HE' im_bcp47 = 'he' ). fill_language_mapping( im_sap1 = 'H' + im_sap2 = 'HU' im_bcp47 = 'hu' ). fill_language_mapping( im_sap1 = 'b' + im_sap2 = 'IS' im_bcp47 = 'is' ). fill_language_mapping( im_sap1 = 'i' + im_sap2 = 'ID' im_bcp47 = 'id' ). fill_language_mapping( im_sap1 = 'BAC1' + im_sap2 = 'GA' im_bcp47 = 'ga' ). fill_language_mapping( im_sap1 = 'I' + im_sap2 = 'IT' im_bcp47 = 'it' ). fill_language_mapping( im_sap1 = 'I' + im_sap2 = 'IT' im_bcp47 = 'it-IT' ). fill_language_mapping( im_sap1 = 'B289' + im_sap2 = '1I' im_bcp47 = 'it-CH' ). fill_language_mapping( im_sap1 = 'J' + im_sap2 = 'JA' im_bcp47 = 'ja' ). fill_language_mapping( im_sap1 = '3' + im_sap2 = 'KO' im_bcp47 = 'ko' ). fill_language_mapping( im_sap1 = '3' + im_sap2 = 'KO' im_bcp47 = 'ko-KR' ). fill_language_mapping( im_sap1 = 'Y' + im_sap2 = 'LV' im_bcp47 = 'lv' ). fill_language_mapping( im_sap1 = 'X' + im_sap2 = 'LT' im_bcp47 = 'lt' ). fill_language_mapping( im_sap1 = '7' + im_sap2 = 'MS' im_bcp47 = 'ms' ). fill_language_mapping( im_sap1 = '7' + im_sap2 = 'MS' im_bcp47 = 'ms-MY' ). fill_language_mapping( im_sap1 = 'B28D' + im_sap2 = '1M' im_bcp47 = 'ms-BN' ). fill_language_mapping( im_sap1 = 'O' + im_sap2 = 'NO' im_bcp47 = 'no' ). fill_language_mapping( im_sap1 = 'L' + im_sap2 = 'PL' im_bcp47 = 'pl' ). fill_language_mapping( im_sap1 = 'P' + im_sap2 = 'PT' im_bcp47 = 'pt' ). fill_language_mapping( im_sap1 = 'P' + im_sap2 = 'PT' im_bcp47 = 'pt-BR' ). fill_language_mapping( im_sap1 = 'BEED' + im_sap2 = 'RM' im_bcp47 = 'rm' ). fill_language_mapping( im_sap1 = '4' + im_sap2 = 'RO' im_bcp47 = 'ro' ). fill_language_mapping( im_sap1 = '4' + im_sap2 = 'RO' im_bcp47 = 'ro-RO' ). fill_language_mapping( im_sap1 = 'R' + im_sap2 = 'RU' im_bcp47 = 'ru-RU' ). fill_language_mapping( im_sap1 = '0' + im_sap2 = 'SR' im_bcp47 = 'sr' ). fill_language_mapping( im_sap1 = '0' + im_sap2 = 'SR' im_bcp47 = 'sr-Cyrl' ). fill_language_mapping( im_sap1 = 'd' + im_sap2 = 'SH' im_bcp47 = 'sr-Latn' ). fill_language_mapping( im_sap1 = 'Q' + im_sap2 = 'SK' im_bcp47 = 'sk' ). fill_language_mapping( im_sap1 = '5' + im_sap2 = 'SL' im_bcp47 = 'sl' ). fill_language_mapping( im_sap1 = 'BF42' + im_sap2 = 'SB' im_bcp47 = 'wen' ). fill_language_mapping( im_sap1 = 'B9B3' + im_sap2 = 'DS' im_bcp47 = 'dsb' ). fill_language_mapping( im_sap1 = 'BB33' + im_sap2 = 'HS' im_bcp47 = 'hsb' ). fill_language_mapping( im_sap1 = 'S' + im_sap2 = 'ES' im_bcp47 = 'es' ). fill_language_mapping( im_sap1 = 'S' + im_sap2 = 'ES' im_bcp47 = 'es-ES' ). fill_language_mapping( im_sap1 = 'B293' + im_sap2 = '1S' im_bcp47 = 'es-AR' ). fill_language_mapping( im_sap1 = 'B2F3' + im_sap2 = '2S' im_bcp47 = 'es-BO' ). fill_language_mapping( im_sap1 = 'B353' + im_sap2 = '3S' im_bcp47 = 'es-CL' ). fill_language_mapping( im_sap1 = 'B233' + im_sap2 = '0S' im_bcp47 = 'es-CO' ). fill_language_mapping( im_sap1 = 'B3B3' + im_sap2 = '4S' im_bcp47 = 'es-CR' ). fill_language_mapping( im_sap1 = 'B413' + im_sap2 = '5S' im_bcp47 = 'es-DO' ). fill_language_mapping( im_sap1 = 'B473' + im_sap2 = '6S' im_bcp47 = 'es-EC' ). fill_language_mapping( im_sap1 = 'B4D3' + im_sap2 = '7S' im_bcp47 = 'es-SV' ). fill_language_mapping( im_sap1 = 'B533' + im_sap2 = '8S' im_bcp47 = 'es-GT' ). fill_language_mapping( im_sap1 = 'B593' + im_sap2 = '9S' im_bcp47 = 'es-HN' ). fill_language_mapping( im_sap1 = 'B298' + im_sap2 = '1X' im_bcp47 = 'es-MX' ). fill_language_mapping( im_sap1 = 'B2F8' + im_sap2 = '2X' im_bcp47 = 'es-NI' ). fill_language_mapping( im_sap1 = 'B358' + im_sap2 = '3X' im_bcp47 = 'es-PA' ). fill_language_mapping( im_sap1 = 'B3B8' + im_sap2 = '4X' im_bcp47 = 'es-PY' ). fill_language_mapping( im_sap1 = 'B418' + im_sap2 = '5X' im_bcp47 = 'es-PE' ). fill_language_mapping( im_sap1 = 'B478' + im_sap2 = '6X' im_bcp47 = 'es-PR' ). fill_language_mapping( im_sap1 = 'B4D8' + im_sap2 = '7X' im_bcp47 = 'es-UY' ). fill_language_mapping( im_sap1 = 'B538' + im_sap2 = '8X' im_bcp47 = 'es-VE' ). fill_language_mapping( im_sap1 = 'BF57' + im_sap2 = 'SW' im_bcp47 = 'sw' ). fill_language_mapping( im_sap1 = 'V' + im_sap2 = 'SV' im_bcp47 = 'sv' ). fill_language_mapping( im_sap1 = 'BFAC' + im_sap2 = 'TL' im_bcp47 = 'tl' ). fill_language_mapping( im_sap1 = '2' + im_sap2 = 'TH' im_bcp47 = 'th' ). fill_language_mapping( im_sap1 = 'T' + im_sap2 = 'TR' im_bcp47 = 'tr' ). fill_language_mapping( im_sap1 = '8' + im_sap2 = 'UK' im_bcp47 = 'uk' ). fill_language_mapping( im_sap1 = 'C069' + im_sap2 = 'VI' im_bcp47 = 'vi' ). fill_language_mapping( im_sap1 = 'C0C1' + im_sap2 = 'WA' im_bcp47 = 'wa' ). ENDMETHOD. + ENDCLASS.