3

ROW_NUMBER()ABAP 程序的功能是否有等价物?

该函数在 SQL 中的使用如下:

SELECT ROW_NUMBER() OVER (ORDER BY SomeField) AS Row, *
FROM SomeTable

它应该将行号作为结果行中的第一列返回(我不确定它是结果集中的行号还是源表中的行号)。我发现该语句可以在 SAP Business One 中使用,但似乎找不到 Open SQL 等效项。

是否有一个或者我将被迫手动循环生成的 itab 以分配索引?

4

2 回答 2

2

如果这是为了存储记录保留的行以供以后在 ABAP 程序中访问,则不需要存储它。它会在您循环播放时保留。就像是。

LOOP AT itab INTO wa_itab.
write /:sy-tabix "This is the index of the record within the table
ENDLOOP.

如果您正在修改内容,然后将它们存储回表中,请为您的值添加一列并执行以下操作:DATA: my_string TYPE string。

LOOP AT itab INTO wa_itab.
my_string = sy-tabix.
CONCATENATE some_text my_string more_text into wa_itab-my_field.
MODIFY itab FROM wa_itab. "Here you can leave out INDEX sy-tabix because it is inside a loop and the current line will be used.
CLEAR my_string.
ENDLOOP.
于 2014-07-15T18:57:47.910 回答
1

不,这在 OpenSQL 中是不可能的。5年前是不可能的,现在仍然是不可能的。

但是,可以在 SAP HANA 中使用CREATE SEQUENCE语句。

于 2019-06-07T06:02:50.470 回答