5

我正在尝试使用以下代码将文本写入本地文件(即在我的笔记本电脑上):

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 DATASETTRANSFER语句,因为我正在后台程序中编写它(由BSPSUBMIT调用)。

4

3 回答 3

7

在后台处理中不可能写入客户端,因为后台处理的本质是没有客户端机器必须连接到 WAS。默认情况下,所有文件都保存到服务器目录DIR_HOME中。

解决方案: 通常下载数据是通过设置正确的 HTTP 头字段并借助cl_bsp_utility=>download.

此类在您的响应中设置正确的内容标题。您必须在XSTRING表单中指定您的数据Content-Type并指定Content-Disposition您想要的数据,例如application/vnd.ms-excelor application/octetstream

Content-Disposition可以用来告诉浏览器要使用的默认文件名,见

attachment; filename=filexyz.xls`

PS 有关在 ABAP 中使用文件的一般信息,您可以参考此帮助文件http://wiki.sdn.sap.com/wiki/display/ABAP/Working+with+files

于 2012-01-19T14:28:50.993 回答
5

OPEN DATASET 和相关关键字仅对服务器上的文件进行操作。有多种其他选项可将文件从后台进程获取到目标计算机。

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

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

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

于 2012-01-19T15:53:50.077 回答
0

正如 Turismo 所写:在后台处理中,您不能在 PC 上编写。写入 PC 需要连接的 SAPGui(=客户端)。

OPEN DATASET并将TRANSFER数据写入服务器。

于 2012-01-19T15:54:53.963 回答