我正试图使用以下代码将文本写入本地文件(即在我的笔记本电脑上):
data: fname(60), text type string value 'la la la'.
fname = 'myfile.txt'.
OPEN DATASET fname FOR OUTPUT IN TEXT MODE encoding default.
TRANSFER text TO fname.
CLOSE DATASET fname.
write 'done'.
程序运行良好,执行后显示"完成"。但是,我在电脑上找不到文本文件"myfile.txt"(它不在SAP工作目录中)。
附加信息
我已经使用函数模块GUI_DOWNLOAD
完成了这项工作,但我必须使用OPEN DATASET和TRANSFER语句,因为我正在后台程序中编写它(由BSP使用SUBMIT
调用)。
在后台处理时不可能写入客户端,因为后台处理的本质是不需要将客户端机器连接到WAS。默认情况下,所有文件都保存到服务器目录DIR_HOME
中。
解决方案:通常,下载数据是通过设置正确的HTTP头字段并在cl_bsp_utility=>download
的帮助下将二进制数据推送到HTTP响应中来实现的。
此类在响应中设置正确的内容标头。您必须以XSTRING
形式指定数据,并指定所需的Content-Type
和Content-Disposition
,例如application/vnd.ms-excel
或application/octetstream
。
此外,Content-Disposition
可用于告诉浏览器要使用的默认文件名,请参阅
attachment; filename=filexyz.xls`
p.S.有关在ABAP中使用文件的一般信息,可以参考此帮助文件http://wiki.sdn.sap.com/wiki/display/ABAP/Working+带有+个文件
OPEN DATASET和相关关键字仅对服务器上的文件进行操作。还有各种其他选项可用于从后台进程将文件放到目标计算机上。
-
如果您的服务器和客户端计算机在Windows上运行,则可以在AL11中映射Windows路径并将文件保存在那里。(请注意,您必须打开目标Windows计算机防火墙才能允许此流量)。
-
您可以在目标计算机上运行FTP服务器,并在那里对文件进行FTP传输。SAP拥有处理此问题的功能模块。查看功能组SFTP。
-
如果两台机器都运行某种版本的UNIX,您甚至可以将文件SCP到目标机器上(因为大多数UNIX都包括ssh,因此也包括SCP)。您必须在SM49中创建一个外部命令,然后设置从服务器到目标机器的公钥身份验证,如果您在SAP服务器上没有管理权限,这会有点棘手,但也有一些方法可以解决这一问题。
正如Turismo所写:在后台处理中,你不能在PC上写。写入PC需要连接SAPGui(=客户端)。
CCD_ 11和CCD_。