at语句应用


DATA: BEGIN OF itab OCCURS 0,

f1 TYPE i,

f2(6) TYPE c,

f3(10) TYPE n,

f4(16) TYPE p DECIMALS 2,

END OF itab.

DATA: sub_tot(10) TYPE p DECIMALS 3.

**--1

itab-f1 = 1.

itab-f2 = 'ONE'.

itab-f3 = 10.

itab-f4 = '1000.00'.

APPEND itab.

CLEAR itab.

itab-f1 = 1.

itab-f2 = 'ONE'.

itab-f3 = 20.

itab-f4 = '2000.00'.

APPEND itab.

CLEAR itab.

itab-f1 = 1.

itab-f2 = 'ONE'.

itab-f3 = 30.

itab-f4 = '3000.00'.

APPEND itab.

CLEAR itab.

*--2

itab-f1 = 2.

itab-f2 = 'TWO'.

itab-f3 = 10.

itab-f4 = '1000.00'.

APPEND itab.

CLEAR itab.

itab-f1 = 2.

itab-f2 = 'TWO'.

itab-f3 = 20.

itab-f4 = '2000.00'.

APPEND itab.

CLEAR itab.

*-- 3

itab-f1 = 3.

itab-f2 = 'THREE'.

itab-f3 = 10.

itab-f4 = '1000.00'.

APPEND itab.

CLEAR itab.

itab-f1 = 3.

itab-f2 = 'THREE'.

itab-f3 = 20.

itab-f4 = '2000.00'.

APPEND itab.

CLEAR itab.

SORT itab BY f1.

LOOP AT itab.

AT FIRST.

WRITE: /35 ' MATERIAL DETAILS:'.

ULINE.

ENDAT.

AT NEW f1.

WRITE: / 'DETAILS OF MATERIAL:' COLOR 7 , itab-f1.

ULINE.

ENDAT.

WRITE: / itab-f1, itab-f2, itab-f3, itab-f4.

sub_tot = sub_tot + itab-f4.

AT END OF f1.

ULINE.

WRITE: / 'SUB TOTAL :' COLOR 3 INVERSE ON, sub_tot COLOR 3 INVERSE ON.

CLEAR sub_tot.

ENDAT.

AT LAST.

SUM.

ULINE.

WRITE: 'SUM:', itab-f4.

ULINE.

ENDAT.

ENDLOOP.

AT....End AT语句区别:

AT FIRST: 循环内表的第一行时触发执行的代码,只执行一次。

AT LAST: 循环内表的最后一行数据时执行代码,只执行一次。

AT NEW F1: 如果字段F1及F1的左则全部字段的数据,与上一行数据不一致,则执行代码。

AT END OF F1: 如果字段F1及F1的左则全部字段的数据,与下一行数据不一致时,则执行代码。

注意事项:

这四种AT....End AT语句,都只能用在loop循环内表语句中。

AT NEW F1和AT END OF F1时需要注意:内表中字段F1之后的字段的值都会变成 *

control level 不能在有where条件的loop内表时使用

代码检查报错:


The LOOP statement processing will be limited

(FROM, TO and WHERE additions in LOOP)

Interaction with group change processing (AT NEW, ...) is undefined

如果在AT NEW F1和AT END OF F1中需要用到F1之后的字段的值,怎么办?

可以在使用该语句之前将值赋值给一个中间变量。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容