下载报表数据保存到服务器
2011-09-02 10:22
274 查看
代码如下:
*&---------------------------------------------------------------------*
*& Report YDOWNVBAK
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ydownvbak.
TABLES:vbak,vbap.
DATA:BEGIN OF wa_itab ,
vbeln LIKE vbak-vbeln,
vkorg LIKE vbak-vkorg,
erdat LIKE vbak-erdat,
kunnr LIKE vbak-kunnr,
posnr LIKE vbap-posnr,
matnr LIKE vbap-matnr,
kwmeng LIKE vbap-kwmeng,
END OF wa_itab.
DATA:itab LIKE wa_itab OCCURS 0 WITH HEADER LINE.
DATA:g_file LIKE rlgrap-filename.
DATA:s_file LIKE rlgrap-filename.
DATA:menge(20).
DATA:line(1000) TYPE c.
SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE t1.
SELECT-OPTIONS:s_erdat FOR vbak-erdat,
s_vbeln FOR vbak-vbeln,
s_kunnr FOR vbak-kunnr,
s_vkorg FOR vbak-vkorg.
PARAMETERS:p_client AS CHECKBOX,
p_dnfile LIKE rlgrap-filename DEFAULT 'D:\',
p_server AS CHECKBOX,
* p_sefile LIKE rlgrap-filename DEFAULT '\usr\sap\tmp\'.
p_sefile LIKE rlgrap-filename DEFAULT '/usr/sap/tmp/'.
SELECTION-SCREEN END OF BLOCK bl1 .
INITIALIZATION.
t1 = '选择条件'.
START-OF-SELECTION.
PERFORM sub_read_data.
END-OF-SELECTION.
PERFORM sub_write_data.
*&---------------------------------------------------------------------*
*& Form SUB_READ_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM sub_read_data .
SELECT vbak~vbeln vkorg vbak~erdat kunnr posnr matnr kwmeng
INTO TABLE itab
FROM vbak
JOIN vbap ON vbap~vbeln = vbak~vbeln
WHERE vbak~vbeln IN s_vbeln
AND vbak~erdat IN s_erdat
AND vkorg IN s_vkorg
AND kunnr IN s_kunnr.
ENDFORM. " SUB_READ_DATA
*&---------------------------------------------------------------------*
*& Form SUB_WRITE_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM sub_write_data .
IF p_client = 'X'.
CONCATENATE p_dnfile 'SD' sy-datum sy-uzeit '.txt' INTO g_file. "文本格式
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
filename = g_file
filetype = 'DAT'
TABLES
data_tab = itab. "被下载的内表
ENDIF.
IF p_server = 'X'.
CONCATENATE p_sefile 'SD' sy-datum sy-uzeit '.txt' INTO s_file. "服务器保存的目录和文件名
OPEN DATASET s_file FOR OUTPUT IN TEXT MODE ENCODING DEFAULT . "打开文件
if sy-subrc = 0.
LOOP AT itab INTO wa_itab.
menge = wa_itab-kwmeng.
CONCATENATE wa_itab-vkorg
wa_itab-kunnr
wa_itab-vbeln
wa_itab-erdat
wa_itab-posnr
wa_itab-matnr
menge
INTO line SEPARATED BY ''.
TRANSFER line TO s_file .
IF sy-subrc NE 0 .
MESSAGE 'ERROR!' type 'E'.
ENDIF.
CLEAR line .
ENDLOOP.
CLOSE DATASET s_file.
else.
MESSAGE 'OPEN ERROR!!' type 'E'.
endif.
ENDIF.
ENDFORM. " SUB_WRITE_DATA
注:读取服务器文件常用事务代码:
1.AL11,服务器上的文件
2.CG3Y 下载文件
3.CG3Z 上传文件
具体OPEN DATASET 使用方法可参考博客/article/8476007.html
执行效果:
*&---------------------------------------------------------------------*
*& Report YDOWNVBAK
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ydownvbak.
TABLES:vbak,vbap.
DATA:BEGIN OF wa_itab ,
vbeln LIKE vbak-vbeln,
vkorg LIKE vbak-vkorg,
erdat LIKE vbak-erdat,
kunnr LIKE vbak-kunnr,
posnr LIKE vbap-posnr,
matnr LIKE vbap-matnr,
kwmeng LIKE vbap-kwmeng,
END OF wa_itab.
DATA:itab LIKE wa_itab OCCURS 0 WITH HEADER LINE.
DATA:g_file LIKE rlgrap-filename.
DATA:s_file LIKE rlgrap-filename.
DATA:menge(20).
DATA:line(1000) TYPE c.
SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE t1.
SELECT-OPTIONS:s_erdat FOR vbak-erdat,
s_vbeln FOR vbak-vbeln,
s_kunnr FOR vbak-kunnr,
s_vkorg FOR vbak-vkorg.
PARAMETERS:p_client AS CHECKBOX,
p_dnfile LIKE rlgrap-filename DEFAULT 'D:\',
p_server AS CHECKBOX,
* p_sefile LIKE rlgrap-filename DEFAULT '\usr\sap\tmp\'.
p_sefile LIKE rlgrap-filename DEFAULT '/usr/sap/tmp/'.
SELECTION-SCREEN END OF BLOCK bl1 .
INITIALIZATION.
t1 = '选择条件'.
START-OF-SELECTION.
PERFORM sub_read_data.
END-OF-SELECTION.
PERFORM sub_write_data.
*&---------------------------------------------------------------------*
*& Form SUB_READ_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM sub_read_data .
SELECT vbak~vbeln vkorg vbak~erdat kunnr posnr matnr kwmeng
INTO TABLE itab
FROM vbak
JOIN vbap ON vbap~vbeln = vbak~vbeln
WHERE vbak~vbeln IN s_vbeln
AND vbak~erdat IN s_erdat
AND vkorg IN s_vkorg
AND kunnr IN s_kunnr.
ENDFORM. " SUB_READ_DATA
*&---------------------------------------------------------------------*
*& Form SUB_WRITE_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM sub_write_data .
IF p_client = 'X'.
CONCATENATE p_dnfile 'SD' sy-datum sy-uzeit '.txt' INTO g_file. "文本格式
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
filename = g_file
filetype = 'DAT'
TABLES
data_tab = itab. "被下载的内表
ENDIF.
IF p_server = 'X'.
CONCATENATE p_sefile 'SD' sy-datum sy-uzeit '.txt' INTO s_file. "服务器保存的目录和文件名
OPEN DATASET s_file FOR OUTPUT IN TEXT MODE ENCODING DEFAULT . "打开文件
if sy-subrc = 0.
LOOP AT itab INTO wa_itab.
menge = wa_itab-kwmeng.
CONCATENATE wa_itab-vkorg
wa_itab-kunnr
wa_itab-vbeln
wa_itab-erdat
wa_itab-posnr
wa_itab-matnr
menge
INTO line SEPARATED BY ''.
TRANSFER line TO s_file .
IF sy-subrc NE 0 .
MESSAGE 'ERROR!' type 'E'.
ENDIF.
CLEAR line .
ENDLOOP.
CLOSE DATASET s_file.
else.
MESSAGE 'OPEN ERROR!!' type 'E'.
endif.
ENDIF.
ENDFORM. " SUB_WRITE_DATA
注:读取服务器文件常用事务代码:
1.AL11,服务器上的文件
2.CG3Y 下载文件
3.CG3Z 上传文件
具体OPEN DATASET 使用方法可参考博客/article/8476007.html
执行效果:
相关文章推荐
- 从服务器下载mp3文件,保存到MediaStore,提取数据mp3中的信息
- 如何在jsp页面下载后台服务器返回的数据并保存为txt格式
- 收藏——Java导出数据到excel保存在服务器及客户端下载
- 收藏——Java导出数据到excel保存在服务器及客户端下载
- PHP写文件——将用户提交的数据保存到服务器的文件中
- Tip:如何指定浏览器下载并保存动态生成的数据时对话框里的默认文件名
- 使用GCDAsyncSocket从服务器下载文件,怎么拼接NSData数据成为一个文件?
- 从服务器下载保存图片
- unity从服务器下载资源并且保存到本地
- HIS保存报表数据
- LightSwitch文件的上传,下载及保存(数据库版)
- 一步步DIY: OSM-Web服务器(七) 利用 Google WebService 批量下载遥感瓦片数据
- 使用POI生成Excel并进行流下载(不需在服务器上保存)
- 关于如何将table中的td标签转换成input标签以及将修改的数据通过ajax保存服务器
- 广州高清卫星地图 用百度卫星地图服务器下载 含标签、道路数据叠加 可商用
- Unity 场景保存,上传服务器,在下载更新场景 IO读取图片和WWW读取图片比较
- 如何处理BLOB类型数据之二:下载BLOB内容并保存到文件中
- C#学习笔记之从FTP服务器上传和下载数据(二)
- 微信JS-SDK选取手机照片上传并下载保存至自己的服务器
- angular2 下载保存文本数据