Abap 为行_NUMBER()打开SQL等效项

Abap 为行_NUMBER()打开SQL等效项,abap,opensql,Abap,Opensql,ABAP程序的ROW\u NUMBER()函数是否有等价物 此函数在SQL中的使用方式如下: SELECT ROW_NUMBER() OVER (ORDER BY SomeField) AS Row, * FROM SomeTable 它应该返回行号作为结果行的第一列(我不确定它是结果集中的行号还是源表中的行号)。我发现这个语句可以在SAP Business One中使用,但似乎找不到与之类似的开放式SQL语句 是否有一个或将强制我手动循环生成的itab以分配索引?如果这是为了存储记录保留的行

ABAP程序的
ROW\u NUMBER()
函数是否有等价物

此函数在SQL中的使用方式如下:

SELECT ROW_NUMBER() OVER (ORDER BY SomeField) AS Row, *
FROM SomeTable
它应该返回行号作为结果行的第一列(我不确定它是结果集中的行号还是源表中的行号)。我发现这个语句可以在SAP Business One中使用,但似乎找不到与之类似的开放式SQL语句


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

如果这是为了存储记录保留的行,以便以后在ABAP程序中访问,则不需要存储它。它会在你循环时保存。差不多

LOOP AT itab INTO wa_itab.
write /:sy-tabix "This is the index of the record within the table
ENDLOOP.
如果要修改内容,然后将其存储回表中,请为值添加一列,并执行以下操作: 数据:我的字符串类型字符串

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中是不可能的。这在5年前是不可能的,现在仍然是不可能的


不过,在SAP HANA中也可以使用该声明。

只是出于好奇-您需要它做什么?行号将(必须)是可变的,那么您想用它做什么呢?基本用例是在它自己的列中以一种可以发送到XML或ALV的结构提供行号。此函数将使我可以使用单个SELECT填充整个结构,而无需将所选日期放入临时itab,循环该itab并填充行号。可以使用本机代替open sql: