您对基于 sy-langu 的阻止语言有何看法
What is your opinion about blocking languages based on sy-langu
Roses are red,
violets are blue
Unexpected 'Langu'
on line 32.
好吧,简而言之:技术限制迫使我忽略西里尔 material 文本(来自 table MAKT 的短文本)。
作为 ABAP 人员,我总是采用务实的解决方案:我通过浏览 table T002 并在谷歌上搜索是否基于西里尔字符来手动排除语言。
有效。但并不性感。感谢反馈。
REPORT Y_TEST_BLOCK_LANGU.
DATA langu_logon TYPE c LENGTH 2.
DATA langu_selected TYPE c LENGTH 1.
CONSTANTS:
BEGIN OF language,
german TYPE c LENGTH 1 VALUE 'D',
english TYPE c LENGTH 1 VALUE 'E',
END OF language.
CALL FUNCTION 'CONVERSION_EXIT_ISOLA_OUTPUT'
EXPORTING
input = sy-langu
IMPORTING
output = langu_logon.
IF
langu_logon = 'BG'
OR langu_logon = 'KK'
OR langu_logon = 'RU'
OR langu_logon = 'SR'
OR langu_logon = 'SH'
OR langu_logon = 'UK'
.
langu_selected = language-english.
ELSE.
langu_selected = sy-langu.
ENDIF.
START-OF-SELECTION.
PARAMETERS p_matnr TYPE matnr.
SELECT SINGLE maktx FROM makt INTO @DATA(maktx)
WHERE matnr = @p_matnr
AND spras = @langu_selected.
WRITE: /'This is the text',
/ maktx,
/'for Material number',
/ p_matnr
.
或者,您可以从 material 文本本身开始反向排除。 SELECT 来自 MAKT 的所有包含不需要的字符的短文本 - 无论这些是什么。然后追溯这些文本属于哪些语言。然后将这些语言放在拒绝列表中。所涉及的 SELECTs 对于在线处理来说可能过于耗时,但可以定期重复,以填充 DB 持久拒绝列表。
正如其他一些人已经指出的那样,更简洁的解决方案是让您的 UI 能够正确显示这些字符。或者,如果不可能,您至少可以屏蔽它们,例如将它们转义为 HTML 或 UTF 代码。这看起来不太好,但至少 UI 会显示一些东西。
同时确保您按照 Dragonthoughts 的建议研究其他语言。如果您的文本包含其他非拉丁语系的语言,您可能也会在其他地方遇到麻烦。不小心撞到汉字可能听起来有点不对劲。但想想其他广泛使用的字符,例如广泛使用的希腊符号,如 alpha、epsilon、omega 等,它们很可能出现在其他英文产品描述中。
Roses are red,
violets are blue
Unexpected 'Langu'
on line 32.
好吧,简而言之:技术限制迫使我忽略西里尔 material 文本(来自 table MAKT 的短文本)。
作为 ABAP 人员,我总是采用务实的解决方案:我通过浏览 table T002 并在谷歌上搜索是否基于西里尔字符来手动排除语言。
有效。但并不性感。感谢反馈。
REPORT Y_TEST_BLOCK_LANGU.
DATA langu_logon TYPE c LENGTH 2.
DATA langu_selected TYPE c LENGTH 1.
CONSTANTS:
BEGIN OF language,
german TYPE c LENGTH 1 VALUE 'D',
english TYPE c LENGTH 1 VALUE 'E',
END OF language.
CALL FUNCTION 'CONVERSION_EXIT_ISOLA_OUTPUT'
EXPORTING
input = sy-langu
IMPORTING
output = langu_logon.
IF
langu_logon = 'BG'
OR langu_logon = 'KK'
OR langu_logon = 'RU'
OR langu_logon = 'SR'
OR langu_logon = 'SH'
OR langu_logon = 'UK'
.
langu_selected = language-english.
ELSE.
langu_selected = sy-langu.
ENDIF.
START-OF-SELECTION.
PARAMETERS p_matnr TYPE matnr.
SELECT SINGLE maktx FROM makt INTO @DATA(maktx)
WHERE matnr = @p_matnr
AND spras = @langu_selected.
WRITE: /'This is the text',
/ maktx,
/'for Material number',
/ p_matnr
.
或者,您可以从 material 文本本身开始反向排除。 SELECT 来自 MAKT 的所有包含不需要的字符的短文本 - 无论这些是什么。然后追溯这些文本属于哪些语言。然后将这些语言放在拒绝列表中。所涉及的 SELECTs 对于在线处理来说可能过于耗时,但可以定期重复,以填充 DB 持久拒绝列表。
正如其他一些人已经指出的那样,更简洁的解决方案是让您的 UI 能够正确显示这些字符。或者,如果不可能,您至少可以屏蔽它们,例如将它们转义为 HTML 或 UTF 代码。这看起来不太好,但至少 UI 会显示一些东西。
同时确保您按照 Dragonthoughts 的建议研究其他语言。如果您的文本包含其他非拉丁语系的语言,您可能也会在其他地方遇到麻烦。不小心撞到汉字可能听起来有点不对劲。但想想其他广泛使用的字符,例如广泛使用的希腊符号,如 alpha、epsilon、omega 等,它们很可能出现在其他英文产品描述中。