在 SELECT 语句中重用内部表之前,是否需要清除内部表?

  • 本文关键字:内部 是否 清除 SELECT 语句 abap
  • 更新时间 :
  • 英文 :


使用SELECT [...] INTO TABLE语法将数据选择到内部表中时,是否需要确保先清除该表?

SELECT 语句是否总是为我清除表,即使它失败了?

是否需要在 SELECT 语句之前清除内部表?

不,你没有。SELECT [...] INTO TABLE语句将始终清除目标表,无论该语句是否成功完成。

正如 SAP 关键字文档所述:

如果使用INTO,则初始化内部表。如果使用APPENDING则前几行保持不变。

因此,具有INTO TABLESELECT将始终清除表,而具有APPENDING TABLE的将始终保留原始条目,无论查询是否成功。


因为我并不总是信任文档,所以我自己进行了快速测试:

DATA:
lt_table TYPE STANDARD TABLE OF but000.
SELECT *
UP TO 20 ROWS
FROM but000
INTO TABLE lt_table.
WRITE :/ |First SELECT. Table contains: { lines( lt_table ) } rows|.
SELECT *
UP TO 10 ROWS
FROM but000
INTO TABLE lt_table.
WRITE :/ |Second SELECT - { lines( lt_table ) } rows|.
SELECT *
UP TO 5 ROWS
FROM but000
APPENDING TABLE lt_table.
WRITE :/ |APPEND - { lines( lt_table ) } rows|.
SELECT *
UP TO 5 ROWS
FROM but000
APPENDING TABLE lt_table
WHERE partner = 0.
WRITE :/ |Failed APPEND - { lines( lt_table ) } rows|.
SELECT *
UP TO 5 ROWS
FROM but000
INTO TABLE lt_table
WHERE partner = 0.
WRITE :/ |Failed SELECT - { lines( lt_table ) } rows|.

此报告将输出:

First SELECT. Table contains: 20 rows
Second SELECT - 10 rows
APPEND - 15 rows
Failed APPEND - 15 rows
Failed SELECT - 0 rows

相关内容

  • 没有找到相关文章

最新更新