有时ABAP我逼疯了用非常简单的任务,如在循环中递增一个整数...增量整数
这里是我的尝试:
METHOD test.
DATA lv_id TYPE integer.
lv_id = 1.
LOOP AT x ASSIGNING <y>.
lv_id = lv_id+1.
ENDLOOP.
ENDMETHOD.
这将导致错误消息字段类型“我”不允许子域访问。
有时ABAP我逼疯了用非常简单的任务,如在循环中递增一个整数...增量整数
这里是我的尝试:
METHOD test.
DATA lv_id TYPE integer.
lv_id = 1.
LOOP AT x ASSIGNING <y>.
lv_id = lv_id+1.
ENDLOOP.
ENDMETHOD.
这将导致错误消息字段类型“我”不允许子域访问。
你的意思是这样的:
ADD 1 to lv_id.
顺便说一句,当你遍历一个内部表中,SY-TABIX有循环计数器。
你已经自己回答了这个问题,反而使事情更清楚一点:
variable + 1
是一个算术表达式 - 加1到变量的值。
variable+1
是对字符变量的偏移操作。例如,如果变量包含ABC
,variable+1
是BC
。
这在处理NUMC时会特别令人困惑。例如,用variable = '4711'
,variable + 1
评估为4712
,而variable+1
为'711'
(字符序列)。
您看到的错误发生是因为无法对非字符变量执行索引操作。
感谢您的支持交代。我确信我不会再犯这个错误;) – Ben 2010-06-07 14:39:30
简单
DATA:gv_inc I型。
地方这种说法在循环
gv_inc = gv_inc + 1。
如果您要增加每个循环的循环次数,您可以直接获取表格大小。
describe table x lines data(lv_id). "Out side of the loop.
谢谢,非常有帮助! – Ben 2010-06-07 14:37:52
只要注意循环内的循环。哦,如果你正在用'DO..TIMES x'循环,那么循环计数器就是'SY-INDEX'。是的,ABAP是一种非常不一致的语言。 – Marius 2013-10-23 15:47:19
SY-TABIX不包含循环计数器,它包含表索引。这些往往是不同的价值观。例如,如果我将LOOP AT消息写入msg WHERE type ='E'',循环实际运行的第一次可能会在第四行,并且sy-tabix的值将是4. – Eric 2014-07-22 18:21:45