为什么ABAP中输出语言键sy-langu仅显示1个字符而非完整2位?
问题解决:ABAP字符串模板中sy-langu仅输出单字符
根本原因
sy-langu是SAP系统的内置语言字段,内部存储长度为1位,存的是SAP私有内部语言编码(比如英文对应存储值E、中文对应存储值1),你预期的两位EN是ISO标准的外部显示格式,字符串模板默认直接读取字段的内部存储值,因此只会输出第一位字符
解决方案
通用兼容方案(全ABAP版本支持)
调用标准转换函数把内部语言码转为两位ISO格式后再输出,示例代码:
DATA: lv_langu_iso TYPE laiso. " 转换内部语言码为两位ISO格式 CALL FUNCTION 'CONVERSION_EXIT_SLAISO_OUTPUT' EXPORTING input = sy-langu IMPORTING output = lv_langu_iso. WRITE: |{ text-003 } { lv_langu_iso }|.
精简方案(ABAP 7.52及以上版本支持)
可直接用类型转换语法实现,无需调用函数:WRITE: |{ text-003 } { CONV laiso( sy-langu ) }|.
两种方案最终都会输出你预期的完整两位语言码,比如英文环境下输出SAP Logon Language Key EN。
内容的提问来源于stack exchange,提问作者Bigflatfoot
相关产品推荐
相关产品推荐

