释疑の语法 ON CHANGE OF

先看标准的语法:

ON CHANGE OF dobj [OR dobj1 [OR dobj2] ... ].
  statement_block1
[ELSE.
  statement_block2]
ENDON.


Effect

The statements ON CHANGE OF and ENDON, which are forbidden in classes, define a control structure that can contain two statement blocks:statement_block1 and statement_block2. AfterON CHANGE OF, any number of data objects dobj1, dobj2... of any data type can be added, linked byOR.

The first time a statement ON CHANGE OF is executed, the first statement blockstatement_block1 is executed if at least one of the specified data objects is not initial. The first statement block is executed for each additional execution of the same statementON CHANGE OF, if the content of one of the specified data objects has been changed since the last time the statementON CHANGE OF was executed. The optional second statement blockstatement_block2 after ELSE is executed if the first statement block is not executed.

For each time the statement ON CHANGE OF is executed, the content of all the specified data objects is saved as an auxiliary variable internally in the global system. The auxiliary variable is linked to this statement and cannot be accessed in the program. The auxiliary variables and their contents are retained longer than the lifetime of procedures. An auxiliary variable of this type can only be initialized if its statementON CHANGE OF is executed while the associated data object is initial.

Note

This control structure is particularly prone to errors and should be replaced by branches with explicitly declared auxiliary variables. 

例子:

DATA BEGIN OF TAB OCCURS 0,
         ID   TYPE CHAR01,
         NAME TYPE CHAR10,
       END OF TAB.

DATA  NUM TYPE I.

TAB-ID '1'TAB-NAME 'A001'APPEND TAB.
TAB-ID '1'TAB-NAME 'A002'APPEND TAB.
TAB-ID '2'.  TAB-NAME 'A002'APPEND TAB.
TAB-ID '2'.  TAB-NAME 'A002'APPEND TAB.

NUM .
LOOP AT TAB.
  ON CHANGE OF TAB-ID  .
    NUM NUM + 1.
  ENDON.
ENDLOOP.

WRITE / NUM.

NUM .
LOOP AT TAB.
  ON CHANGE OF TAB-ID OR TAB-NAME.
    NUM NUM + 1.
  ENDON.
ENDLOOP.
WRITE / NUM.

结果:



用途:

对于内表判断的操作尤为重要,省去了好多变量以及if判断,值得注意的是,第一次进去肯定累加,收藏。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SAP剑客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值