对于ABAP程序,是否有一个等价的ROW_NUMBER()
函数?
这个函数在SQL中的用法如下:
SELECT ROW_NUMBER() OVER (ORDER BY SomeField) AS Row, *
FROM SomeTable
应该返回行号作为结果行的第一列(我不确定它是结果集中的行号还是源表中的行号)。我发现这个语句可以在SAP Business One中使用,但似乎找不到一个等效的Open SQL。
是否有一个,或者我将被迫手动循环生成的itab来分配索引?
如果这是为了存储保存记录的行以便稍后在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.
不,这在OpenSQL中是不可能的。这在五年前是不可能的,现在仍然不可能。
但是,在SAP HANA中可以使用CREATE SEQUENCE语句。