ABAP:如何将文本写入本地文件

时间:2012-01-19 12:49:39

标签: io sap abap bsp

我尝试使用以下代码将文本写入本地文件:

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

程序运行正常,执行后出现“完成”。但是我在PC上找不到文本文件“myfile.txt”(它不在SAP工作目录中)。

其他信息 我已经完成了这项工作 使用FM GUI_DOWNLOAD,但我必须使用OPEN DATASET,TRANSFER方法,因为我在后台程序中写这个(由BSP使用SUBMIT调用)。

3 个答案:

答案 0 :(得分:6)

在后台处理过程中无法写入客户端 后台处理的本质是不必将客户机连接到WAS。

如果创建文件非常耗时,您可以触发在WAS上创建文件,然后提供要在BSP应用程序中的某个位置下载的文件列表。

<强>更新
如果只指定文件名,则将文件放入profile参数DIR_HOME指定的目录中。您可以在RZ11中检查/编辑配置文件参数,或在AL11中查看目录。

有关在ABAP中处理文件的一般信息,请参阅http://wiki.sdn.sap.com/wiki/display/ABAP/Working+with+files

第二次更新:
通常,通过设置正确的http头字段并将二进制数据推送到http响应来实现下载数据 你应该看一下cl_bsp_utility=>download 这会在您的响应中设置正确的内容标头。您必须指定数据(XSTRING)并指定所需的Content-TypeContent-Disposition
Content-Type是文件的mime类型。因此,对于可能为application/vnd.ms-excel的Excel文件,或者您可以使用类似application/octetstream的常规内容 Content-Disposition可用于告诉浏览器使用的默认文件名。示例值可以是attachment; filename=filexyz.xls

请注意,基于Content-TypeContent-Disposition的组合,浏览器可能会略有不同的行为(即提供“另存为...”对话框,而不是将其显示为内嵌)。

答案 1 :(得分:4)

OPEN DATASET及相关关键字仅对服务器上的文件进行操作。还有其他各种选项可以从后台进程将文件传输到目标计算机。

  1. 如果您的服务器和客户端计算机在Windows上运行,则可以在AL11中映射Windows路径并将文件保存在那里。 (请注意,您必须打开目标Windows计算机防火墙才能允许此流量。)

  2. 您可以在目标计算机上运行FTP服务器并在那里ftp文件。 SAP有功能模块来处理这个问题。查看功能组SFTP。

  3. 如果两台机器都运行某个版本的UNIX,你甚至可以SCP到目标机器上的文件(因为大多数Unix都包含ssh,因此也包括scp)。您必须在SM49中创建一个外部命令,然后设置从服务器到目标机器的公钥认证,如果您没有SAP服务器上的管理员权限,这有点棘手,但有办法解决这个问题。太

答案 2 :(得分:0)

正如Turismo所写:在后台处理中,你无法在PC上书写。 写入PC需要连接的SAPGui(=客户端)。

OPEN DATASETTRANSFER将数据写入服务器。