如何打开一个文件? 你可以使用下面的语句来打开文件。 但请注意,如果你不使用任何附加值,打开的文件只能进行读取而不能更改。而且是二进制模式。 如果你没有指定目录,系统将使用配置参数DIR_HOME定义的目录作为默认目录。 因此 , 我建议你在文件名变量里使用完整的文件路径 , 以避免混乱。 语法 OPEN DATASET <file_name>. SY-SUBRC = 0. “文件打开. SY-SUBRC = 8. “文件无法打开。 如何从文件中读取数据? 如果你想从文件中读取数据,可以使用”OPEN DATASET“ 和”READ DATASET 语句. 只要用户有更改权限, 这个语句就能以“读取/更新”模式打开文件。 如果用户没有更改权限,文件只以'读取'模式打开。 如果这仍然不能打开文件,错误信息就会出现。 下面的代码范例显示如何打开一个文件,一行行读出数据,并保存数据到一个内部表中。 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. 如何到一个文件中填写数据?
如果你需要保存数据到一个文件中,你可以使用“OPEN DATASET” 对于OUTPUT的语句, 只要用户有文件读取的授权, 此语句试图以'写/更新'模式打开文件。 如果用户没有授权,系统中打开'写'模式文件。 如果该文件已存在,其现有的内容被删除。 如果该文件不存在,系统会创建一个新文件。 代码范例通过循环(LOOP)从 内表中读取数据, 然后一行行地转移到文件中。 DATA: output_file(40) TYPE c, OPEN DATASET output_file FOR OUTPUT IN TEXT MODE WRITE:/ 'ERROR: Writing file with message', msg. 如何将数据加到一个文件的尾部?
前面的范例是把数据加到一个文件中。 如果文件在系统中存在,旧的内容会被删除然后加进新的数据。 但在很多情况下,你不想清除现有的内容。 你只是想追加新的内容到文件的末尾。 要做到这一点,你可以使用“OPEN DATASET... FOR APPENDING“语句. 这个语句会试图打开文件成”追加'模式, 然后你可以把新的数据加到文件的末尾。 如何使你的文件I / O程序可以在不同的操作系统下运行?
正如你在下面的例子中看到,你需要提供一个逻辑文件名和所属操作系统的名称,从而获得实时的物理文件名。
If you don't specify the operating system, the function module will use system defined operating system name, sy-opsys, by default. 如果你不指定操作系统,功能模块将使用系统定义的默认操作系统的名(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操作系统,下面的代码范例显示如何在该操作系统上运行命令。 该机制其实就是打开一个文件 , 运行命令。 然后将运行结果写入一个文件。 代码范例显示了如何运行的Unix命令。 如果你在Windows系统上,你只需把文件的路径和命令更改成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. |
|