在abap里求一个整数列“1,2,3,4....n“的和不大于6000的最小正整数n

如题:
代码如下

 DATA : zsl TYPE i VALUE 0,
sum LIKE zsl VALUE 0.
WHILE sum <= 6000.
  zsl = zsl + 1.
  sum = zsl + sum.
ENDWHILE.
WRITE: zsl, sum.

输入结果:zsl = 110, sum = 6105。
在这个循环里明显多循环了一次,求大神这个问题怎么解决?

sum = sum - zsl.
WRITE: zsl, sum.
不知道你这个语言是否支持循环的时候把while写在后面,C语言可以这么写
do {
zsl = zsl + 1;
sum = zsl + sum;
} while (sum <= 6000);

先判断再加啊(这个语言不熟,写错了见谅)

    WHILE (sum+zsl+1) <= 6000.

DATA : ZSL TYPE I VALUE 0,
SUM LIKE ZSL VALUE 0.

DATA : ZSL_TEMP TYPE I VALUE 0,
SUM_TEMP TYPE I VALUE 0.

WHILE SUM_TEMP <= 6000.
ZSL_TEMP = ZSL_TEMP + 1.
SUM_TEMP = ZSL_TEMP + SUM_TEMP.
IF SUM_TEMP <= 6000.
ZSL = ZSL_TEMP.
SUM = SUM_TEMP.
ENDIF.
ENDWHILE.
WRITE: ZSL, SUM.**