您的位置:首页 > 其它

下载报表数据保存到服务器

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

执行效果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: