FavoriteLoading
0

使用Open dataset从SAP application 服务器上下载excel文件

[隐藏]

1, 简介

本文介绍一下如何读取SAP application server上的excel文件,并将读取到的excel二进制流转换到SAP内表中。

主要步骤如下:

1,通过open dataset以二进制流方式读取SAP服务器上的excel文件

2,将二进制流转换为excel中的XML格式

3,通过xslt_tool将XML转换为内表

2,  SAP代码

代码实现将服务器上test.xlsx中的内容读取到内表中,test.xlsx中含4列。

test.xlsx

详细可以参见代码中的注释。

代码注释中的sheet xml 和share xml到底是什么,其实是可以直观看到的,将excel文件的扩展名改成压缩文件格式.zip,然后就可以在压缩文件夹中看到具体的sheet xml和share xml。

.zip中的文件夹结构如下,

在xl中可以看到share xml,

然后在worksheets中可以Excel文件中找到所有的sheet页,本例子中只有一个sheet,叫sheet1.

sharestrings.xml中保存的是excel xml节点值,也就是excel中每个cell的值

sheet1.xml中保存的是每个cell的索引值,如下 ,

1,r = “1” 标识第一行

2,spans = “1:4” 标识 总共4列

3,r = “A1” 标识第一行A单元格

4,<v>0</v> 标识index

3, XSLT_TOOL转换

程序里用到两个转换, zxml_it_ipc和 yxml_it_ipc_xls,这两个都是xslt程序的转换

zxml_it_ipc:

转换后,删除namespace的xml如下,可以与之前截图比一下,删除的目的是为了 SDIXML_XML_TO_DOM。

yxml_it_ipc_xls:

注意:标签<VBELN><VKORG><ERNAM><VTWEG>要和内表中定义的对应的字段名字相同。

xsl:if test="position() &gt; 1" :表示要从excel的第二行解析

4,  程序运行结果

以上。