此博客为原创博客,都是个人工作经历所得,转载请注明出处

ABAP下载服务器文件到本机

转自http://blog.sina.com.cn/s/blog_701594f40100l8ml.html

ABAP:下载服务器文件到本机

对服务器的文件进行读写操作,SAP提供了OPEN DATASET语句。而下载文件到本地,则可以调用GUI_DOWNLOAD函数。

由于我们只需要将文件原原本本地进行复制,所以采用BINARY MODE才是比较好的办法,可以支持TXT、PDF、WORD以及任意形式的文件下载。

DATA: dset TYPE string,
subrc LIKE sy-subrc,
leng TYPE i,
fsize TYPE i VALUE 0,
buf TYPE c LENGTH 1000,
tblob LIKE TABLE OF buf.

dset = '/home/comp/data/test.pdf'.
OPEN DATASET dset FOR INPUT IN BINARY MODE.
IF sy-subrc <> 0.
MESSAGE 'Error: open dataset.' TYPE 'E'.
ENDIF.

WHILE subrc = 0.
leng = 0.
READ DATASET dset INTO buf ACTUAL LENGTH leng.
subrc = sy-subrc.
CHECK leng > 0.
fsize = fsize + leng.
APPEND buf TO tblob.
ENDWHILE.
CLOSE DATASET dset.

CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
bin_filesize = fsize
filename = 'c:\test.pdf'
filetype = 'BIN'
TABLES
data_tab = tblob
EXCEPTIONS
OTHERS = 9.

说明:

(1)OPEN DATASET时设置IN BINARY MODE,GUI_DOWNLOAD时也是以'BIN'模式,从而实现二进制的直接传送。

(2)buf的大小决定了每次读取服务器文件中多大量的数据,如果是NON-UNICODE系统,则我们每次读取1000 BYTE(leng=1000);

如果是UNICODE系统则每次读取2000 BYTE (leng = 2000)。

(3)要注意READ DATASET语句的返回值sy-subrc,它代表的并非本次读取到了数据与否,而是代表本次读取是否已到达文件结束符。换言之,它代表的是下次是否需要继续读取该文件。

posted @ 2014-07-09 10:52  Rainystuday  阅读(639)  评论(0编辑  收藏  举报