增加一个整数

发布于 2024-09-03 20:44:25 字数 269 浏览 7 评论 0原文

有时,ABAP 会因为非常简单的任务(例如在循环内递增整数)而让我抓狂……

这是我的尝试:

METHOD test.

  DATA lv_id TYPE integer.

  lv_id = 1.

  LOOP AT x ASSIGNING <y>.
    lv_id = lv_id+1.
  ENDLOOP.

ENDMETHOD.

这会导致错误消息字段类型“I”不允许子字段访问。

Sometimes ABAP drives me crazy with really simple tasks such as incrementing an integer within a loop...

Here's my try:

METHOD test.

  DATA lv_id TYPE integer.

  lv_id = 1.

  LOOP AT x ASSIGNING <y>.
    lv_id = lv_id+1.
  ENDLOOP.

ENDMETHOD.

This results in the error message Field type "I" does not permit subfield access.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

还给你自由 2024-09-10 20:44:25

您自己已经回答了这个问题,但为了让事情更清楚一点:

variable + 1 

是一个算术表达式 - 将变量的值加 1。

variable+1

是对字符变量的偏移操作。例如,如果变量包含 ABC,则 variable+1BC

在处理 NUMC 时,这尤其令人困惑。例如,对于 variable = '4711'variable + 1 计算结果为 4712,而 variable+1'711'(字符序列)。

您看到的错误发生是因为无法对非字符变量执行索引操作。

You already answered the question yourself, but to make things a bit clearer:

variable + 1 

is an arithmetic expression - add 1 to the value of the variable.

variable+1

is an offset operation on a character variable. For example, if variable contains ABC, variable+1 is BC.

This can be especially confusing when dealing with NUMCs. For example, with variable = '4711', variable + 1 is evaluated to 4712, whereas variable+1 is '711' (a character sequence).

The error you saw occurred because it's not possible to perform the index operation on a non-character-like variable.

魔法少女 2024-09-10 20:44:25

你的意思是:

ADD 1 to lv_id.

顺便说一下,当你循环内部表时,SY-TABIX 有循环计数器。

You mean like:

ADD 1 to lv_id.

By the way, when you loop over an internal table, SY-TABIX has the loop counter.

春夜浅 2024-09-10 20:44:25

呃,我明白了。
这是该死的空间...

lv_id = lv_id + 1

有效...

Uh, I got it.
It's the f****** spaces...

lv_id = lv_id + 1

works...

蓬勃野心 2024-09-10 20:44:25

简单

数据:gv_inc类型I。

将此语句放入循环中

gv_inc = gv_inc + 1 。

Simple

DATA : gv_inc type I .

place this statement in loop

gv_inc = gv_inc + 1 .

最后的乘客 2024-09-10 20:44:25

从 SAP NetWeaver 版本 7.54 开始,您还可以使用:

lv_id += 1.

而不是

lv_id = lv_id + 1.

快乐编码!

from SAP NetWeaver Version 7.54 you can also use:

lv_id += 1.

Instead of

lv_id = lv_id + 1.

Happy coding!

缱倦旧时光 2024-09-10 20:44:25

如果您要增加每个循环周期,那么您可以直接获取表大小。

describe table x lines data(lv_id). "Out side of the loop.

If you are going to increment every loop cycle than you can directly get the table size.

describe table x lines data(lv_id). "Out side of the loop.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文