REPORTydownvbak.TABLES:vbak,vbap.DATA:BEGIN OFwa_itab ,
vbelnLIKE vbak-vbeln,
vkorgLIKE vbak-vkorg,
erdatLIKE vbak-erdat,
kunnrLIKE vbak-kunnr,
posnrLIKE vbap-posnr,
matnrLIKE vbap-matnr,
kwmengLIKE vbap-kwmeng,END OFwa_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) TYPEc.SELECTION-SCREEN BEGIN OF BLOCK bl1 WITHFRAME TITLE t1.SELECT-OPTIONS:s_erdat FOR vbak-erdat,
s_vbelnFOR vbak-vbeln,
s_kunnrFOR vbak-kunnr,
s_vkorgFOR vbak-vkorg.PARAMETERS:p_client AS CHECKBOX,
p_dnfileLIKE 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
*
*----------------------------------------------------------------------*
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
*
*----------------------------------------------------------------------*
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