ABAP使用文件

本文档详述了如何在ABAP中处理应用服务器和演示服务器上的文件,包括打开、关闭、读取、写入、追加文件以及指定二进制和文本模式。此外,还介绍了如何使用平台独立的文件名以及与演示服务器交互的方法。
摘要由CSDN通过智能技术生成

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

ABAP/4 允许使用应 用服务器或演示服务器上的顺序文件。

例如,这些 文件可以用 作数据的临时存储设备或本地程序与SAP 系统的接口。

使用应用服 务器上的文 件

ABAP/4提供一些语句,以使用存储在应用服务器顺序文件中而不是存储在数据库中的数据。下列主题说明:

文件和文件 路径的物理 定址是与平台相关的。R/3 系统提供了 允许使用平台相关文件名的功能模块和事务:

 

ABAP/4 的文件处理

ABAP/4 提供了三种 文件处理语 句:

        OPEN DATASET 语句用于打 开文件

        CLOSE DATASET 语句用于关 闭文件

        DELETE DATASET 语句用于删 除文件

 

打开文件

要在应用服 务器上打开 文件,请使 用 OPEN DATASET 语句。关于OPEN DATASET 语句的基本 形式说明, 参见:

OPEN DATASET 语句的基本 形式 (页 a)

OPEN DATASET 语句有若干个包括大量任务选项。可以:

关于其他选 项的详细信 息,参见OPEN DATASET 语句的关键 字文档。

 

OPEN DATASET 语句的基本 形式

要在应用服 务器上打开 文件,请如 下使用 OPEN DATASET 语句:

语法

OPEN DATASET <dsn>[options].

此语句打开 文件 <dsn> 。如果不指 定任何模式 选项,则文 件将按二进 制模式打开 (参见下述 主题)。如 果系统不能打开文件,则将系统字段SY-SUBRC 设置为 0,否则SY-SUBRC 返回 8。

可以将文件 名<dsn> 指定为字母 或包含文件 名的字段。如果未指定路径,则系统将在应用服务器上SAP 系统运行的目录中打开文件。要打开文件,运行SAP 系统的用户必须在操作系统级有相应的权限。

 

文件名是平 台相关的。 必须根据运 行 SAP 系统的操作 系统规则指 定文件名或 路径。要编 写与操作系 统中不相关 的程序,可 以使用逻辑 文件名(关 于逻辑文件 名的详细信 息,参见使用平台独 立的文件名 (页l))。

 

DATA FNAME(60).

FNAME = '/tmp/myfile'.

OPEN DATASET 'myfile'.

OPEN DATASET FNAME.

如果 SAP 系统在 UNIX 系统下运行 ,则此示例 可以运行。 此程序在运 行 SAP 系统的目录 中以及在“ /tmp” 路径中打开 文件“myfile” 。对于其它 操作系统, 必须替换其 它文件名。 例如,对 OpenVMS 系统,可以 指定下述内 容:

FNAME = '[TMP]myfile.BIN'

OPEN DATASET 'myfile.BIN'.

 

 

接受操作系 统消息

尝试打开文 件后,要接 受操作系统 消息,请如 下使用 OPEN DATASET 语句的 MESSAGE 选项:

语法

OPEN DATASET <dsn>MESSAGE <msg>.

系统将在变 量 <msg> 中放置相关 的操作系统 消息。

要进行错误 处理,请与 系统字段一 起使用此选 项。

 

DATA: MESS(60),
      FNAME(10) VALUE 'hugo.xyz'.

OPEN DATASET FNAME MESSAGE MESS.

IF SY-SUBRC <> 0.
  WRITE: 'SY-SUBRC:', SY-SUBRC,
       / 'System Message:', MESS.
ENDIF.

如果 SAP 系统在 UNIX 下运行且不 存在“hugo.xyz” 文件,则此 示例输出如 下:

 

 

打开文件读 取

要打开文件 进行读访问 ,请如下使 用 OPEN DATASET 语句的 FOR INPUT 选项:

语法

OPEN DATASET <dsn> FORINPUT.

此语句打开 文件用于读 取。文件必须已经存在,否则系统将SY-SUBRC 设置为 8 并且忽略此命令。

如果文件已 打开(可能 用于读、写、或追加),系统将复位到文件的起始位置。但是在重新打开文件之前使用CLOSE 语句是良好的编程风格(关于关闭文件的详细信息,参见关闭文件 (页h) )。

 

DATA FNAME(60) VALUE 'myfile'.

OPEN DATASET FNAME FOR INPUT.

IF SY-SUBRC = 0.
  WRITE / 'File opened'.
  .....
ELSE.
  WRITE / 'File not found'.
ENDIF.

在此示例中 ,打开“myfile” 文件以读取 。

 

打开文件写 入

要打开文件 进行写访问 ,请如下使 用 OPEN DATASET 语句的 FOR OUTPUT 选项:

语法

OPEN DATASET <dsn> FOROUTPUT.

此语句打开 文件用于写 入。如果文 件不存在, 则创建文件 。如果文件已存在但处于关闭状态,则删除其内容。如果文件已存在且已打开(可能为读、写、或追加),则复位到文件的起始位置。如果系统可以打开文件,则SY-SUBRC 设置为 0,否则SY-SUBRC 返回 8。

 

DATA: MESS(60),
      FNAME(10) VALUE '/tmp'.

OPEN DATASET FNAME FOR OUTPUT MESSAGE MESS.

IF SY-SUBRC <> 0.
  WRITE: 'SY-SUBRC:', SY-SUBRC,
       / 'System Message:', MESS.
ENDIF.

如果 SAP 系统在UNIX 下运行,此 示例输出如 下:

 

系统不能打 开该文件, 因为它是目 录。

 

下列程序将 演示当打开 文件用于写 入时其位置 如何设置。 但在重新打 开已打开文 件之前使用 CLOSE 语句是良好 的编程风格 (关于关闭 文件的详细 信息,参见关闭文件 (页h) )。

DATA FNAME(60) VALUE 'myfile'.
DATA NUM TYPE I.

OPEN DATASET FNAME FOR OUTPUT.

DO 10 TIMES.
  NUM = NUM + 1.
  TRANSFER NUM TO FNAME.
ENDDO.

PERFORM INPUT.

OPEN DATASET FNAME FOR OUTPUT.

NUM = 0.
DO 5 TIMES.
  NUM = NUM + 10.
  TRANSFER NUM TO FNAME.
ENDDO.

PERFORM INPUT.

CLOSE DATASET FNAME.

OPEN DATASET FNAME FOR OUTPUT.

NUM = 0.
DO 5 TIMES.
  NUM = NUM + 20.
  TRANSFER NUM TO FNAME.
ENDDO.

PERFORM INPUT.

FORM INPUT.
  SKIP.
  OPEN DATASET FNAME FOR INPUT.
  DO.
    READ DATASET FNAME INTO NUM.
    IF SY-SUBRC <> 0.
      EXIT.
    ENDIF.
    WRITE / NUM.
  ENDDO.
ENDFORM.

此程序输出 如下:

         1
         2
         3
         4
         5
         6
         7
         8
         9
        10

        10
        20
        30
        40
        50
         6
         7
         8
         9
        10

        20
        40
        60
        80
       100

在此示例中 ,“myfile” 文件

1.    打开 以写入。

2.    用 10 个整数填写 (关于 TRANSFER 语句的详细 信息,参见 向文件中写 入数据 (页 i) )。

3.    同时 打开以读取 ,这将复位 到文件的起 始位置。

4.    被读 入字段 NUM(关 于 READ DATASET 语句的详细 信息,参见 从文件中读 取数据 (页 k) )。NUM 的值写到输 出屏幕。

5.    重新 打开以写入 。这将复位 到文件的起 始处位置。

6.    用 5 个整数填写 。这些整数 将改写文件 的以前内容 。

7.    重新 打开以读取 。这将复位 到文件的起 始位置。

8.    被读 入字段 NUM。NUM 的值将写到 输出屏幕。

9.    关闭 (关于 CLOSE DATASET 语句的详细 信息,参见 关闭文件 (页 h) )。

10.  重 新打开以写 入。这将删 除现有文件 的内容。

11.  用 5 个整数填写 。

12.  同 时被打开以 读取。这将 复位到文件 的起始位置 。

13.  被 读入字段 NUM。NUM 的值将写到 输出屏幕。

 

 

打开文件追 加

要打开文件 追加数据, 请如下使用 OPEN DATASET 语句的 FOR APPENDING 选项:

语法

OPEN DATASET <dsn> FORAPPENDING.

此语句打开 文件在文件 末尾写入数据。如果文件不存在,则创建文件。如果文件已存在但处于关闭状态,系统将打开文件并定位到文件末尾。如果文件已存在且已打开(可能为读、写、或追加),将定位设置到文件末尾。SY-SUBRC总是返回0。

 

在再次打开 已经打开的 文件之前使 用 CLOSE 语句是良好 的编程风格 (关于关闭 文件的详细 信息,参见 关闭文件 (页 h))。

 

 

DATA FNAME(60) VALUE 'myfile'.

DATA NUM TYPE I.

OPEN DATASET FNAME FOR OUTPUT.
DO 5 TIMES.
   NUM = NUM + 1.
   TRANSFER NUM TO FNAME.
ENDDO.

OPEN DATASET FNAME FOR INPUT.

OPEN DATASET FNAME FOR APPENDING.
NUM = 0.
DO 5 TIMES.
   NUM = NUM + 10.
   TRANSFER NUM TO FNAME.
ENDDO.

OPEN DATASET FNAME FOR INPUT.
DO.
  READ DATASET FNAME INTO NUM.
  IF SY-SUBRC <> 0.
    EXIT.
  ENDIF.
  WRITE / NUM.
ENDDO.

此示例输出 如下:

          1
          2
          3
          4
          5
         10
         20
         30
         40
         50

在此示例中 ,打开文件 以写入并用 从 1 ~ 5 中的五个整 数填写(关 于 TRANSFER 语句的详细 信息,参见 向文件中写 入数据 (页i))。下一语 句 OPEN DATASET 将复位到起 始位置,然 后打开文件 以追加并且 定位设置到 末尾位置。 10~ 50 的五个整数 将写入文件 。最后读取 文件内容并 写到屏幕。

 

 

指定二进制 模式

要用二进制 模式处理文 件,请如下 使用 OPEN DATASET 语句中的 IN BINARY MODE 选项:

语法

OPEN DATASET <dsn> IN BINARY MODE [FOR....].

如果从以二 进制模式打 开的文件中读取数据或向此类文件中写入数据,则系统将逐字节地传输数据。在传输期间,系统不解释文件内容。在将文件内容写入到另一文件时,系统将传输源文件的所有字节。在从文件读取数据到字段时,传输的字节数目取决于目标字段大小。在读取之时或之后,可以用其它ABAP/4 语句给目标 字段定址, 系统将根据数据类型解释字段内容。

 

DATA FNAME(60) VALUE 'myfile'.

DATA: NUM1    TYPE I,
      NUM2     TYPE I,
      TEXT1(4) TYPE C,
      TEXT2(8) TYPE C,
      HEX      TYPE X.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值