我在SAP ABAP中遇到错误,该错误表示DATASET_CANT_CLOSE,错误号为32(Broken Pipe)。问题是:什么程序触发了这种错误?
据我所知,此错误是由以下原因引发的:
CLOSE DATASET dset
但我无法重现错误,因为我不知道什么程序会触发这种错误。
这是我使用的代码:
method GENERATE_TXT_FILE.
DATA :
lwa_data TYPE t_line,
lv_param TYPE sxpgcolist-parameters.
"Upload File to Server
*Open Dataset
OPEN DATASET im_file_name FILTER 'dos2ux'
FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
CLEAR lwa_data.
LOOP AT it_data INTO lwa_data.
CATCH SYSTEM-EXCEPTIONS file_access_errors = 4
OTHERS = 8.
TRANSFER lwa_data-lines TO im_file_name.
ENDCATCH.
IF sy-subrc <> 0.
CLEAR lwa_data.
EXIT.
ENDIF.
CLEAR lwa_data.
ENDLOOP.
*Close Dataset
CLOSE DATASET im_file_name.
答案 0 :(得分:0)
正如我通过后台作业日志调查的那样,运行后台作业的当前服务器似乎尚未映射到文本文件文件夹。解决方案是将服务器重新映射到文本文件夹。
答案 1 :(得分:0)
您正在使用FILTER
extension to OPEN DATASET
- 这可能是一个巨大安全问题,并且除非您知道自己正在做什么,否则会引发大量的可移植性问题。不是问题的关键所在。来自文档:
执行语句OPEN DATASET时,将启动进程 指定语句的操作系统。当文件是 打开读取,通道(管道)与STDOUT链接 进程,在文件读取期间从中读取数据。文件 本身与该过程的STDIN相关联。文件打开时 对于写入,通道(管道)链接到进程的STDIN,to 写入时传递哪些数据。该过程的输出是 转移到这个文件。
在您的情况下,过滤器命令可能决定纾困 - 请参阅this answer。为什么难以调查 - 您可能需要查看各种系统日志才能找到答案。如果问题确实是一些未映射的网络文件夹,您可以尝试切换到UNC路径。