FavoriteLoading
0

通过XML转换下载.xlsx格式的excel文件

在SAP系统中,通过SE11显示一个table的内容,可以发现ALV grid的显示界面上有个spread sheet的标准按钮,点击这个按钮可以将显示的内容下载成excel文件,其中也包括扩展名.xlsx的文件。

2017-02-04_15-28-29

这个功能很方便,因为下载的结果和ALV中看到的是一样的。

2017-02-04_15-46-37

debug研究了一下标准代码,发现是将需要下载的内表先转换成XML stream,然后再通过gui_download的BIN模式将xml stream下载成.xlsx文件。

2017-02-04_15-30-57

写了一个简单的程序供大家参考

在status上加了两个按钮,一个是标准的spreadsheet按钮(&XXL),一个是自定义的按钮(DOWN),供下载结果对比使用。

2017-02-04_15-40-34

代码简单说明:

1) cl_salv_bs_tt_util=>if_salv_bs_tt_util~transform是用来指定下载的excel格式的,也就是模拟了标准按钮的那个format选择步骤,这个类方法中用到了接口if_salv_bs_xml中的一些属性,10就标识是下载成.xlsx格式的文件。

2017-02-04_15-58-35

2) SCMS_XSTRING_TO_BINARY可以将Xtring转化成二进制格式并保存到内表中

以上。