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

来源:互联网 发布:股票自动挂单软件 编辑:程序博客网 时间:2024/06/16 23:07

代码如下:

*&---------------------------------------------------------------------*
*& 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 WITH HEADER LINE.
DATA:g_file LIKE rlgrap-filename.
DATA:s_file LIKE rlgrap-filename.
DATA:menge(20).
DATA:line(1000TYPE 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 使用方法可参考博客http://blog.csdn.net/lbxp521/article/details/6741534

 

执行效果:

 

原创粉丝点击