[ABAP EXCEL DOI 操作]xingu
2012年01月04日
1
引言
SAP将EXCEL文件中的数据上传到R3(内表),对数据进行处理后,再下载到EXCEL文件中是经常用到的操作,文档主要介绍了对EXCEL文档的上传与下载功能实现的介绍俱乐部英文
1.1目的及范围
本文档主要介绍如何实现SAP系统上传与下载EXCEL文件介绍及相应实例,可适用于ABAP开发人员,分析人员使用
1.2参考资料
1.3定义
•
1.4文档结构
文档的各章节介绍的内容如下:
∙第2节介绍SAP上传EXCEL文件到R3
∙第3节介绍SAP将R3内容下载到EXCEL文件中
长春托福培训
∙第4节具体案例
2SAP上传EXCEL文件到R3
以下将讲解SAP如何上传EXCEL文件到内表:
2.1FM:TEXT_CONVERT_XLS_TO_SAP
该Function Module用于将EXCEL文件中的数据上传到内表中,要求内表的列数和要传得EXCEL数据的列数要相同,因为FM是按照列来匹配传值的,单元格文本不能超过256个字符。
下面介绍该FM中的各个参数:
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
* I_FIELD_SEPERATOR =
I_LINE_HEADER = ‘X’ “去掉首先标识
i_tab_raw_data = “ WORK TABLE
i_filename = l_file ”文件路径
tables
i_tab_converted_data = lt_data “接收数据的内表
* EXCEPTIONS
* CONVERSION_FAILED = 1
* OTHERS = 2
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
参数介绍
I_LINE_HEADER | 去掉首先标识,当为‘X’时,去年首行 |
i_tab_raw_data | WORK TABLE |
i_filenamegloryhole | EXCEL文件完整路径 |
i_tab_converted_data | 接收数据的内表,列数与EXCEL一致 |
| |
2.2FM:ALSM_EXCEL_TO_INTERNAL_TABLE
call function 'ALSM_EXCEL_TO_INTERNAL_TABLE'
exporting
filename = filenm
i_begin_col = 1
i_begin_row = 1
i_end_col = 9
i_end_row = 10
tables
intern = lt_data
exceptions
inconsistent_parameters = 1
upload_ole = 2
others = 3.
选美记参数:
filename | 文件路径 |
i_begin_col | 开始列 |
i_begin_row | 开始行 |
i_end_col | 结束列 |
i_end_row | 结束行 |
just a kissintern | 内表 |
| |
diskpart3SAP将R3内容下载到EXCEL文件
3.1FM:SAP_CONVERT_TO_XLS_FORMAT
Function Module如下:
CALL FUNCTION 'SAP_CONVERT_TO_XLS_FORMAT'
EXPORTING
* I_FIELD_SEPERATOR =
* I_LINE_HEADER = ''
i_filename = 'd:/download.xlsx'
* I_APPL_KEEP = ' '
tables
i_tab_sap_data = gt_data
* CHANGING
* I_TAB_CONVERTED_DATA =
* EXCEPTIONS
* CONVERSION_FAILED = 1
* OTHERS = 2
.
参数介绍
i_filename | EXCEL文件完整路径 |
i_tab_sap_data | 内表 |
| |
| |
4DOI技术操作EXCEL
石碳酸4.1介绍
4.1.1OLE&DOI两者之间的关系:
OLE(Object Linking and Embuding,对象的连接与嵌入技术)是SAP早期与微软Office集成的工具,而DOI(Desktop Office Integration Interfaces,桌面办公系统集成接口)是
它的替代技术。在实际项目中使用到OLE&DOI的场合多是EXCEL表格的读入或是填制。有些需要自动画表格及填数据,有的只是要求在原有的模版上填制数据。根据不同的场合可以选用不同的技术。
4.1.2OLE&DOI关于EXCEL的处理:
OLE实际上是类EXCEL中VBA的一种写法。有一种简单的方法,就是你可以在EXCEL中把要实现的动作录制成宏,然后根据宏的代码把它改成OLE。OLE同时也支持直接调用EXCEL宏程序(没有禁宏的前提下)。
DOI完全用类实现。特点是,你不用再去记那些繁琐的VBA语言了,DOI都给你包装成类的方法了。同时作为一个控件,已经集成在了SAP的GUI中了,你就可以在SAP的屏幕中写Office的东西了,不用再跳出一个窗口来了,减少一些误操作。当然DOI也是支持调用EXCEL宏程序的,前提是宏没有被禁。
4.1.3DOI优点:
推荐用DOI方式导数据到Excel,而不要用OLE,DOI是调用SAP自带的类来操作的,可控
性更高,并且可以把Excel窗口当作一个片屏幕控件放入屏幕的容器中。
4.2DOI实现EXCEL操作
4.2.1上传EXCEL模板
将模板上传至服务器的常用方式有三种:
1. FTP服务器
把文件传到FTP上,然后在运行的时候,直接输入文件服务器的路径,把模版在本地打开填制。
2.T-code:SMW0(OLE技术实现时,上传EXCEL的方法)
用于Web的一种文件存储,也可以借用来存储模版。建立之前要维护相应的MIME types(先把文件的类型要注册),方可上传此类型的文件。
3.T-code:OAOR(DOI技术实现时,上传EXCEL的方法,下面实例中将着重说明步骤)
是将模版传输到BDS(Business Document Service),然后程序运行时在本地打开进行填制。
4.2.2DOI操作perhapsEXCEL的类
类I_OI_SPREADSHEET中的方法
Method | Description |
SET_HIERARCHY_TABLE | Sets the Hierarchies Using a Table |
LOAD_LIB | Load DLL |
SET_HEADER | Sets a Header |
CLEAR_HIERARCHY | Delete Hierarchy |
SET_HIERARCHY | Sets Hierarchy |
GET_CELL_FORMATS_TABLE | Gets Information about Cells |
GET_SELECTED_AREAS | Returns a Collection of Selected Ranges |
SETLOCALE | Sets the Date and Decimal Format |
SET_FIXED_COLS | Sets the Number of Fixed Columns |
SET_FIXED_ROWS | Sets the Number of Fixed Rows |
SET_INFO_TABLE | Sets the Info Table |
INSERT_RANGES | Inrts Several Ranges |
CELL_FORMAT | Sets Individual Cell Attributes |
CLEAR_ALL_RANGES | Deletes the Contents and Formatting of the Ranges |
foreigner什么意思DELETE_CONTENT_RANGES | Deletes Ranges |
DELETE_RANGES | Deletes Entire Ranges |
ADD_SHEET | Inrts a Worksheet |
DELETE_SHEET | Deletes a Worksheet |
SET_SHEET_NAME | Sets the Name of a Worksheet |
| |