如何打開一個文件? 你可以使用下面的語句來打開文件。 但請注意,如果你不使用任何附加值,打開的文件只能進行讀取而不能更改。而且是二進制模式。 如果你沒有指定目錄,系統(tǒng)將使用配置參數(shù)DIR_HOME定義的目錄作為默認目錄。 因此 , 我建議你在文件名變量里使用完整的文件路徑 , 以避免混亂。 語法 OPEN DATASET <file_name>. SY-SUBRC = 0. “文件打開. SY-SUBRC = 8. “文件無法打開。 如何從文件中讀取數(shù)據(jù)? 如果你想從文件中讀取數(shù)據(jù),可以使用”O(jiān)PEN DATASET“ 和”READ DATASET 語句. 只要用戶有更改權(quán)限, 這個語句就能以“讀取/更新”模式打開文件。 如果用戶沒有更改權(quán)限,文件只以'讀取'模式打開。 如果這仍然不能打開文件,錯誤信息就會出現(xiàn)。 下面的代碼范例顯示如何打開一個文件,一行行讀出數(shù)據(jù),并保存數(shù)據(jù)到一個內(nèi)部表中。 DATA: input_file(40) TYPE c, OPEN DATASET input_file FOR INPUT IN TEXT MODE IF sy-subrc NE 0. ENDDO. CLOSE DATASET input_file. 如何到一個文件中填寫數(shù)據(jù)?
如果你需要保存數(shù)據(jù)到一個文件中,你可以使用“OPEN DATASET” 對于OUTPUT的語句, 只要用戶有文件讀取的授權(quán), 此語句試圖以'寫/更新'模式打開文件。 如果用戶沒有授權(quán),系統(tǒng)中打開'寫'模式文件。 如果該文件已存在,其現(xiàn)有的內(nèi)容被刪除。 如果該文件不存在,系統(tǒng)會創(chuàng)建一個新文件。 代碼范例通過循環(huán)(LOOP)從 內(nèi)表中讀取數(shù)據(jù), 然后一行行地轉(zhuǎn)移到文件中。 DATA: output_file(40) TYPE c, OPEN DATASET output_file FOR OUTPUT IN TEXT MODE WRITE:/ 'ERROR: Writing file with message', msg. 如何將數(shù)據(jù)加到一個文件的尾部?
前面的范例是把數(shù)據(jù)加到一個文件中。 如果文件在系統(tǒng)中存在,舊的內(nèi)容會被刪除然后加進新的數(shù)據(jù)。 但在很多情況下,你不想清除現(xiàn)有的內(nèi)容。 你只是想追加新的內(nèi)容到文件的末尾。 要做到這一點,你可以使用“OPEN DATASET... FOR APPENDING“語句. 這個語句會試圖打開文件成”追加'模式, 然后你可以把新的數(shù)據(jù)加到文件的末尾。 如何使你的文件I / O程序可以在不同的操作系統(tǒng)下運行?
正如你在下面的例子中看到,你需要提供一個邏輯文件名和所屬操作系統(tǒng)的名稱,從而獲得實時的物理文件名。
If you don't specify the operating system, the function module will use system defined operating system name, sy-opsys, by default. 如果你不指定操作系統(tǒng),功能模塊將使用系統(tǒng)定義的默認操作系統(tǒng)的名(SY - opsys)。
DATA: lv_filenam TYPE string.
CALL FUNCTION 'FILE_GET_NAME' logical_filename = '<file_name>'
* OPERATING_SYSTEM = SY-OPSYS * WITH_FILE_EXTENSION = ' ' file_name = lv_filenam IF sy-subrc <> 0. 如何在ABAP程序里運行Windows /Unix命令?
如果你是一個Unix或Windows操作系統(tǒng),下面的代碼范例顯示如何在該操作系統(tǒng)上運行命令。 該機制其實就是打開一個文件 , 運行命令。 然后將運行結(jié)果寫入一個文件。 代碼范例顯示了如何運行的Unix命令。 如果你在Windows系統(tǒng)上,你只需把文件的路徑和命令更改成Windows格式。 DATA: result_file(50) VALUE '/tmp/test', OPEN DATASET result_file FOR OUTPUT IN TEXT MODE ENCODING DEFAULT 如何從應用服務器(Application Server)上檢索到文件列表?
使用功能模塊“RZL_READ_DIR_LOCAL”, 你可以從應用服務器上得到給定的文件目錄中的文件列表。 下面的代碼范例顯示了如何從當前目錄檢索文件列表。 DATA: lv_fdir TYPE pfeflnamel VALUE '.', LOOP AT it_files. |
|