今天遇到一个需求,用户在ALV中导出Excel时想要保留数字文本前“0”,下面是找到的一些方法。
当将ALV报表数据导出到Excel时,数字前面的零(前导零)默认会被Excel去掉。以下是几种解决方法:
方法1经测无效;方法2导出的数据在Excel中显示时会有‘ ‘ ’ 一个单引号存在;方法3可以正常显示数字前的0;方法4未测试。(仅供参考)
- 方法1:将字段转换为文本类型
在ALV字段目录(FIELDCATALOG)中,将需要保留前导零的字段设置为文本类型:
DATA: lt_fieldcat TYPE slis_t_fieldcat_alv.
LOOP AT lt_fieldcat ASSIGNING <fs_fieldcat> WHERE fieldname = '您的字段名'.
<fs_fieldcat>-datatype = 'CHAR'. "设置为字符类型
<fs_fieldcat>-just = 'L'. "左对齐
ENDLOOP.
- 方法2:在数据前添加单引号
在准备数据时,在需要保留前导零的值前添加单引号:
LOOP AT lt_data ASSIGNING <fs_data>.
<fs_data>-your_field = '''' && <fs_data>-your_field.
ENDLOOP.
- 方法3:使用Excel格式前缀
在导出前,为单元格设置Excel格式前缀:
LOOP AT lt_data ASSIGNING <fs_data>.
<fs_data>-your_field = '="' && <fs_data>-your_field && '"'.
ENDLOOP.
- 方法4:使用OO ALV的样式设置
如果使用OO ALV,可以设置单元格属性:
DATA: lo_column TYPE REF TO cl_salv_column.
lo_column ?= lo_columns->get_column( 'YOUR_FIELD' ).
lo_column->set_celltype( if_salv_c_cell_type=>text ).
方法3测试结果

1404

被折叠的 条评论
为什么被折叠?



