zoukankan      html  css  js  c++  java
  • 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: est.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,它代表的并非本次读取到了数据与否,而是代表本次读取是否已到达文件结束符。换言之,它代表的是下次是否需要继续读取该文件。

  • 相关阅读:
    canvas,画个纸飞机
    时钟
    去除滚动条,内容仍然可以滚动
    鼠标指针移入移出改变图片透明度
    Mysql数据库优化总结
    一次利用nginx漏洞的木马事件
    一个批量删除大表数据的shell小脚本
    MegaCli监控raid卡磁盘信息以及相关的shell脚本
    MYSQL delete语句不支持别名?
    一次Mysql数据库服务器磁盘空间满引发的写入和同步问题
  • 原文地址:https://www.cnblogs.com/rainysblog/p/3833105.html
Copyright © 2011-2022 走看看