如何实现ALV-Grid列标题多语言翻译(避免多文本元素维护)
最优解决方案:绑定数据元素自动获取多语言文本
不需要维护多个文本元素,推荐直接利用SAP数据元素(Data Element)自带的短、中、长文本特性,通过ALV的API自动读取这些多语言文本,只需维护一次数据元素的翻译即可。
实现步骤
- 复用/创建数据元素:在SE11中找到或创建对应字段的数据元素(比如用于收入的
S_REVENUE),维护其短、中、长文本,并完成各目标语言的翻译。 - ALV代码中绑定数据元素:使用ALV列对象的
set_column_from_ddic方法,直接关联数据元素,自动填充三种长度的列文本:
" 方法1:通过结构+字段名绑定(如果字段来自某结构) alv->get_columns( )->get_column( 'REVENUE' )->set_column_from_ddic( i_structure_name = 'ZMY_STRUCTURE' " 包含REVENUE字段的结构名 i_fieldname = 'REVENUE' ). " 方法2:直接指定数据元素(如果字段没有关联结构) alv->get_columns( )->get_column( 'REVENUE' )->set_column_from_ddic( i_rollname = 'S_REVENUE' " 数据元素名 ).
替代方案:单文本元素适配多长度(不推荐)
如果确实不想用数据元素,也可以只维护一个长文本元素,然后通过字符串截取适配短、中长度,但这种方法在多语言场景下可能因文本长度差异导致显示问题,仅作备选:
DATA(lv_long_text) = TEXT-001. " 维护一个包含完整长文本的文本元素 alv->get_columns( )->get_column( 'REVENUE' )->set_short_text( |{ lv_long_text WIDTH = 10 }| ). alv->get_columns( )->get_column( 'REVENUE' )->set_medium_text( |{ lv_long_text WIDTH = 20 }| ). alv->get_columns( )->get_column( 'REVENUE' )->set_long_text( lv_long_text ).
内容的提问来源于stack exchange,提问作者schmelto
相关产品推荐
相关产品推荐

