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

B. *_*les 4 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'.
Run Code Online (Sandbox Code Playgroud)

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

附加信息 我使用FM GUI_DOWNLOAD得到了这个,但是我必须使用OPEN DATASET,TRANSFER方法,因为我在后台程序中写这个(由BSP使用SUBMIT调用).

Tur*_*smo 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类型.所以对于一个可能的Excel文件,application/vnd.ms-excel或者你可以使用一般的东西application/octetstream.
Content-Disposition可用于告诉浏览器使用的默认文件名.一个示例值可能是attachment; filename=filexyz.xls.

要知道,浏览器可以根据组合略有不同的行为Content-TypeContent-Disposition(即提供一个"另存为..."对话框,而不是显示它内联).


myd*_*rms 5

OPEN DATASET和相关关键字仅对服务器上的文件起作用。还有多种其他选项可用于从后台进程将文件传输到目标计算机上。

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

  2. 您可以在目标计算机上运行FTP服务器,然后在其中将文件ftp。SAP具有处理此问题的功能模块。查看功能组SFTP。

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