使用“用键读取表”查找最后一个匹配结果

Sui*_*mon 4 sap abap

我需要在与v_key = x匹配的内部表中找到最后一个条目的sy-tabix。我正在尝试这样做:

read table i_tab with key v_key = x
Run Code Online (Sandbox Code Playgroud)

但是,由于表中有多个与v_key = x匹配的条目,如何确保我得到最后一个匹配条目的sy-tabix?不幸的是,我无法通过其他键进行搜索。

Józ*_*zai 6

READ TABLE用于读取单行,对于更多行,您必须使用LOOP

LOOP AT itab
     ASSIGNING ...
     WHERE vkey EQ x.
ENDLOOP.
Run Code Online (Sandbox Code Playgroud)

LOOPsy-tabix 之后将紧接条件为真的最后一行。

正如所指出的(请参见下面的讨论),要获得最佳性能,必须NON-UNIQUE SORTED为此字段存在一个密钥(无论是主密钥还是次密钥)

  • 当然,对于LOOP AT,“ itab”必须是声明为“ TYPE SORTED TABLE OF ... ... with NON-UNIQUE KEY v_key”的表,以实现最佳性能。此外,如果您有许多行具有相同的v_key值,则性能不是最佳的(请参阅我的答案以获得更好的方法) (3认同)