小编das*_*TeR的帖子

通过 REDUCE 检查 itab 的所有行是否符合条件?

为了检查内表的所有条目是否lt_itab满足条件 COND,我想使用 REDUCE 语句。一旦发生违反 COND 的行,循环当然需要终止。下面的第二个代码块似乎可以工作,但在我看来像是对迭代索引的轻微滥用。您是否知道 REDUCE 语法中有更好/更透明的解决方案?是否可以使用迭代变量的结构(整数、布尔值)?该INDEX INTO选项似乎不适用于 REDUCE。与内核版本 753(或更低版本)的兼容性会很好。

这是我的最小可重现示例(MRE),仅在lvr_flag_allowed = abap_false OR注释掉时才通过语法检查(即 -> "lvr_flag_allowed = abap_false OR):

DATA: lt_itab         TYPE TABLE OF i,
      rv_flag_allowed TYPE boole_d.

lt_itab = VALUE #( ( 2 ) ( 1 ) ( -1 ) ( 5 ) ).

IF lt_itab IS NOT INITIAL.
  rv_flag_allowed = REDUCE #( INIT lvr_flag_allowed = abap_true
                              FOR lvf_idx = 1 UNTIL lvr_flag_allowed =  abap_false OR
                                                    lvf_idx > lines( …
Run Code Online (Sandbox Code Playgroud)

abap loops conditional-statements until-loop

2
推荐指数
1
解决办法
3877
查看次数

标签 统计

abap ×1

conditional-statements ×1

loops ×1

until-loop ×1