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