服务器保存的目录和文件名

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/'.
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 '.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

 

posted @ 2018-08-22 15:43  HARU_ちゃん  阅读(607)  评论(0编辑  收藏  举报