2015-01-12 79 views
0

我在SAP ABAP中遇到了一個錯誤,它說錯誤號32(Broken Pipe)的DATASET_CANT_CLOSE。問題是:什麼程序引發了這種錯誤?DATASET_CANT_CLOSE錯誤號32「斷開的管道」

據我所知,這個錯誤被觸發:

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

請添加完整的代碼 - 至少打開數據集並關閉它的部分。 – vwegert

+0

添加完整的打開關閉數據集代碼..請幫助:) – Kioels

回答

0

正如我已經通過後臺作業日誌的調查,似乎當前服務器其運行的後臺作業還沒有得到尚未映射到文本文件夾。解決方案是將服務器重新映射到文本文件夾。

0

您正在使用FILTER extension to OPEN DATASET - 它可以是一個巨大的安全問題以及便攜性問題,提高負荷,除非你知道自己在做什麼,但是這並不是問題是什麼。從文檔:

當執行語句OPEN DATASET時,會在 指定語句的操作系統中啓動進程。當打開文件 進行讀取時,通道(管道)與 進程的STDOUT相鏈接,在文件讀取期間將從該進程讀取數據。文件 本身與進程的STDIN相關聯。當打開文件 進行寫入時,通道(管道)鏈接到進程的STDIN,到 寫入時傳遞哪些數據。該進程的輸出是 轉向此文件。

在你的情況下,過濾器命令可能決定紓困 - 參見this answer之間。爲什麼很難調查 - 你可能需要通過各種系統日誌來查明。如果問題確實是一些未映射的網絡文件夾,則可以嘗試切換到UNC路徑。

相關問題