转自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,它代表的并非本次读取到了数据与否,而是代表本次读取是否已到达文件结束符。换言之,它代表的是下次是否需要继续读取该文件。

ABAP下载服务器文件到本机的更多相关文章

  1. paramiko模块的安装和使用(含上传本地文件或文件夹到服务器,以及下载服务器文件到本地)

    安装和使用分两步介绍: 介绍一下,本文的运行环境是win7 64位 和python 2.7  . 安装: WIN7_64位 安装python-ssh访问模块(paramiko)的安装教程,本人亲测下面 ...

  2. Linux命令行上传本地文件到服务器 、 下载服务器文件到本地

    sh使用命令: scp 将本地文件上传至服务器 第一个是本地文件的路径/文件名, 例如 ./index.tar.gz  . index.html . bg.png 等 第二个是要上传到的服务器的位置  ...

  3. Xshell如何上传下载服务器文件

    Xshell远程连接服务器后,可以通过sz,rz下载上传文件到服务器. 安装命令: yum install lrzsz 从服务端发送文件到客户端: sz filename 选择下载文件要保存的目录 从 ...

  4. JAVA 批量下载服务器文件到本地指定文件夹并重命名

    /** * @功能 下载文件到指定文件夹并重命名 * @param url 请求的路径 * @param filePath 文件将要保存的目录 * @param filename 保存到本地的文件名 ...

  5. ABAP下载txt文件

    IF NOT DOWN_F[] IS INITIAL.    CASE DOWN_MODE . "下载模式是放在所选路径下的.TXT文档中      WHEN 'X' .        CA ...

  6. ubuntu 通过ssh上传/下载服务器文件

    1.用ssh登录远程ubuntu主机 (主机ip为:1.2.3.4;用户名:username) ssh username@1.2.3.4 2.从远程ubuntu主机copy文件/文件夹到本地(scp) ...

  7. ABAP下载xml文件

    [转http://www.cnblogs.com/byfhd/archive/2007/08/17/859829.html] ************************************* ...

  8. 使用scp命令下载服务器文件

    scp -P 7022 admin@ip:/newnow/mysql/backup.sql 7birds.sql -P 指定端口号,默认为22

  9. 一、手把手教你docker搭建fastDFS文件上传下载服务器

    在搭建fastDFS文件上传下载服务器之前,你需要准备的有一个可连接的linux服务器,并且该linux服务器上已经安装了docker,若还有没安装docker的,先百度自行安装docker. 1.执 ...

随机推荐

  1. MPTCP 源码分析(一) MPTCP的三次握手

    简述:      MPTCP依然按照正常的TCP进行三次握手,只是在握手过程中增加了MPTCP特有的信息.   建立过程      三次握手过程如下图所示: 左边客户端发送的第一个SYN包携带有客户端 ...

  2. WebView简单使用

    public class MainActivity extends Activity { WebView webView; @Override protected void onCreate(Bund ...

  3. 快速构建大数据存储分析平台-ELK平台安装

    一.概述 ELK是由Elastic公司开发的Elasticsearch.Logstash.Kibana三款开源软件的缩写(但不限于这三款软件). 为什么使用ELK? 在目前流行的微服务架构中,一个大型 ...

  4. 替代 Navigator 组件

    前言:最近在研究 react-native 时,突然发现 Navigator 组件被 react-native 包 抛弃了.现总结了几种替代方法. 方法一:引入 react-native-deprec ...

  5. 我是怎样理解web页面的

    事实上web页面包括三部分东东 1.页面展示的元素(HTML) 2.页面元素展示的样式(CSS) 3.控制页面元素的交互(JavaScript) 不管页面多么复杂,从这三方面去看,都会得到清晰的认识的 ...

  6. IOS开发准备 资料集锦

    1 http://blog.csdn.net/column/details/xfzl-kykhd.html 2

  7. C# string[ ][ ] 与string[,]

    1.string[][] 是一维数组,数组中的元素是string[],相当于锯齿数组 例如:string[][] arrar = new string[][] {                  n ...

  8. 防火墙firewall的设置和查看

    systemctl start firewalld.service # 开启防火墙firewallsystemctl stop firewalld.service # 停止防火墙firewall sy ...

  9. Input 银行卡验证

    $("#card_num").keyup(function(){ var op=""; var t=$("#card_num").val() ...

  10. unity3d WebPlayer版本号音效无声音问题

    unity web player,其是一款浏览器执行unity3d游戏引擎公布的游戏的插件,和Flash Player非常像,安全无毒应该是你玩某款网页游戏安装的.假设以后不玩了就能够卸载 Unity ...