为什么嵌套的LOOP AT SCREEN会导致无限循环/递归?

时间:2019-06-25 06:38:24

标签: sap abap

这是给你的。尽管这种语言构造没有多大意义,但我想知道为什么嵌套的LOOP AT SCREEN会导致无限循环(递归?)。

让我们采用以下简单程序。

REPORT yyy.

PARAMETERS:
  p_x1 TYPE abap_bool.

AT SELECTION-SCREEN OUTPUT.
  LOOP AT SCREEN.
    BREAK-POINT.
  ENDLOOP.

BREAK-POINT语句将仅执行4次。这导致了这样的嵌套循环将运行16次的假设。相反,下面提到的程序将永远运行并以超时异常结束。

REPORT yyy.

PARAMETERS:
  p_x1 TYPE abap_bool.

AT SELECTION-SCREEN OUTPUT.
  LOOP AT SCREEN.
    LOOP AT SCREEN.
      ASSERT 1 = 1.
    ENDLOOP.
  ENDLOOP.

嵌套LOOP AT SCREEN似乎会导致无限循环或某种无限递归。

为什么会这样?是否记录在某处?扩展检查不报告有关循环的任何内容。同样适用于代码检查器。

编辑

我还检查了这是否是带有标题行的内部表的普遍问题。好像没有。

REPORT YYY.

DATA: gt_t000 TYPE t000 OCCURS 10 WITH HEADER LINE.

START-OF-SELECTION.
  SELECT * FROM t000
    INTO TABLE gt_t000[].

  LOOP AT gt_t000.
    LOOP AT gt_t000.
      WRITE / gt_t000-mandt.
    ENDLOOP.
  ENDLOOP.

0 个答案:

没有答案