Abap 我的循环从数字1开始,而不是从2开始

Abap 我的循环从数字1开始,而不是从2开始,abap,Abap,这是我第一次来ABAP 实际结果不是我所期望的 预期结果应该是 2 x 1 2 2 x 2 4 2 x 3 6 2 x 4 8 2 x 5 10 .. .. .. 试试我的解决办法 DATA: n(1) TYPE i VALUE '2', sum(2) TYPE i. DO 9 TIMES. IF sy-index = 1. CONTINUE. ENDIF. PERFORM multi using sy-index. ENDD

这是我第一次来ABAP



实际结果不是我所期望的


预期结果应该是

2 x 1  2
2 x 2  4
2 x 3  6
2 x 4  8
2 x 5  10

..
..
..
试试我的解决办法

DATA: n(1)   TYPE i VALUE '2',
      sum(2) TYPE i.


DO 9 TIMES.
   IF sy-index = 1.
     CONTINUE.
   ENDIF.

   PERFORM multi using sy-index.
ENDDO.

FORM multi USING i_num TYPE i.
  DATA: lv_num TYPE i.

  MOVE i_num TO lv_num.
     DO 10 TIMES.
      IF sy-index = 1.
        CONTINUE.
      ENDIF.
     sum = lv_num * sy-index.

     WRITE: / lv_num, 'x', sy-index,  sum.

   ENDDO.
ENDFORM.

首先,请不要对窗体、宏、方法或函数模块中的全局变量进行操作。将其作为参数传递

其次,这里有一些解决你问题的方法

我还将
多个
功能保留为宏,但它应该至少实现为一个
表单

DATA: sum(2) TYPE i.
DATA: l_outer_loop_index TYPE i.

DEFINE multiple.
  sum = &1 * &2.
  WRITE: / &1, 'x', &2,  sum.
END-OF-DEFINITION.

DO 9 TIMES.
   IF sy-index = 1.
     CONTINUE.
   ENDIF.
   l_outer_loop_index = sy-index.
   DO 9 TIMES.
     multiple l_outer_loop_index sy-index.
   ENDDO.
ENDDO.

谢谢贾格尔,我参考了他的答案。我有点零钱。这是我的第一个答案。我希望这能帮助你

DATA: sum(2) TYPE i.
DATA: sumstring(2) TYPE c.
DATA: l_outer_loop_index TYPE i.
DATA: result(100) TYPE c.
DATA: num1(10) TYPE c,
      num2(10) TYPE c.
DEFINE multiple.
  clear: result.
  sum = &1 * &2.
  WRITE &1 to num1.
  WRITE &2 to num2.
  WRITE sum to sumstring.
  CONDENSE sumstring.
  CONDENSE num1.
  CONDENSE num2.
  concatenate  num1 'x' num2 '=' sumstring INTO result SEPARATED BY space.
  WRITE: / result.
END-OF-DEFINITION.
DO 9 TIMES.
  IF sy-index = 1.
    CONTINUE.
  ENDIF.
  l_outer_loop_index = sy-index.
  DO l_outer_loop_index TIMES.
    multiple l_outer_loop_index sy-index.
    IF l_outer_loop_index = sy-index.
       WRITE: / .
    ENDIF.
  ENDDO.
ENDDO.

告诉这个网站……”sy index是一个系统变量。我不确定“&1”在abap中的作用。为什么不将sy index与声明的变量'n'相乘?在这种情况下使用宏绝对不是一个好主意。谢谢您的回答。我帮了很多忙。
DATA: sum(2) TYPE i.
DATA: l_outer_loop_index TYPE i.

DEFINE multiple.
  sum = &1 * &2.
  WRITE: / &1, 'x', &2,  sum.
END-OF-DEFINITION.

DO 9 TIMES.
   IF sy-index = 1.
     CONTINUE.
   ENDIF.
   l_outer_loop_index = sy-index.
   DO 9 TIMES.
     multiple l_outer_loop_index sy-index.
   ENDDO.
ENDDO.
DATA: sum(2) TYPE i.
DATA: sumstring(2) TYPE c.
DATA: l_outer_loop_index TYPE i.
DATA: result(100) TYPE c.
DATA: num1(10) TYPE c,
      num2(10) TYPE c.
DEFINE multiple.
  clear: result.
  sum = &1 * &2.
  WRITE &1 to num1.
  WRITE &2 to num2.
  WRITE sum to sumstring.
  CONDENSE sumstring.
  CONDENSE num1.
  CONDENSE num2.
  concatenate  num1 'x' num2 '=' sumstring INTO result SEPARATED BY space.
  WRITE: / result.
END-OF-DEFINITION.
DO 9 TIMES.
  IF sy-index = 1.
    CONTINUE.
  ENDIF.
  l_outer_loop_index = sy-index.
  DO l_outer_loop_index TIMES.
    multiple l_outer_loop_index sy-index.
    IF l_outer_loop_index = sy-index.
       WRITE: / .
    ENDIF.
  ENDDO.
ENDDO.