SAP ABAP AT NEW 和AT END OF的用法

AT END OF 用法以及星号处理 合并前 合并后 DATA:lt_outLIKETABLEOFgs_out. DATA:ls_outLIKEgs_out. DATA:ls_out2LIKEgs_out. DATAlv_tabixTYPEsy-tabix. LOOPATgt_outINTOgs_outWHEREmark... 阅读详情
AI摘要

本文详细介绍了ABAP编程语言中内表的高级操作技巧,包括使用AT NEW、AT END OF等语句进行内表分组统计的方法,以及注意事项。还介绍了在使用binarysearch、delete adjacent duplicates等功能前的准备工作,例如排序等。

1 使用binary search之前,需要sort,并且sort by ascending(系统默认的顺序也是ascending)。而且read table with key的顺序同sort的顺序相同,否则出错,常会找不到纪录。Delete adjacent duplicates之前一定要sort。

2 关于内部表示和外部表示:调用BAPI和Update DB的时候,一定要使用内部形式(物料号有前导零的时候被认为是内部形式;单位一般也有内部形式外部形式之分)。在se11浏览数据的时候,显示数据的画面是使用内部形式,当detail overview的时候,则是外部形式。

3 使用at new, at first, at last, at end of的时候要注意:loop的时候不能加条件;at和endat之间不能使用loop into的working area。手动实现at new, at end of的时候,需要注意,容易出错,尤其是在at end of的时候。

4 一般情况下,更新数据库需要commit,但debug会自动commit,程序结束也会自动commit。

5 对于选择界面上的select-options,clear s_lifnr[]是指clear body part,clear s_lifnr是指clear header part。一般不直接编辑界面上的select-options。



1、AT New事件触发说明
如 AT New f.
f 是内表的一个字段,当f字段或者f字段左边的字段内容发生变化是该事件后面的语句都会执行。
TYPES: BEGIN OF COMPANIES_TYPE,
NAME(30),
PRODUCT(20),
SALES TYPE I,
END OF COMPANIES_TYPE.

DATA: COMPANIES TYPE STANDARD TABLE OF COMPANIES_TYPE WITH
NON-UNIQUE DEFAULT KEY INITIAL SIZE 20,
WA_COMPANIES TYPE COMPANIES_TYPE.

…

LOOP AT COMPANIES INTO WA_COMPANIES.
AT NEW PRODUCT.
NEW-PAGE.
WRITE / WA_COMPANIES-NAME WA_COMPANIES-PRODUCT.
ENDAT.
WRITE: / WA_COMPANIES-PRODUCT, WA_COMPANIES-SALES.
AT END OF NAME.
SUM.
WRITE: / WA_COMPANIES-NAME, WA_COMPANIES-SALES.
ENDAT.
ENDLOOP.
这个样例当name变化时,AT new事件也会执行。

2、AT New 发生时工作区的字段的值

All character type fields (on the right) are filled with “*” after the current control level key.

All other fields (on the right) are set to their initial values after the current control level key.

AT NEW 和AT END OF的用法

http://www.sapclub.org/blog/nyf425/archive/2008/01/07/67689.html

使用 AT NEW f. 和 .AT END OF f 时需要注意:

1,f 必须是内表的第一个字段。

2,内表中f 之后的字段的值都会变成 *。

例:

REPORT Z_TEST.

DATA: BEGIN OF TH_LIFNR,
LIFNR TYPE LFA1-LIFNR,
ITEM TYPE C,
END OF TH_LIFNR.

DATA: TD_LIFNR LIKE TABLE OF TH_LIFNR.

SELECT LIFNR FROM EKKO
INTO TABLE TD_LIFNR
WHERE EBELN > 4500006374
AND EBELN < 4500006390.

SORT TD_LIFNR ASCENDING BY LIFNR.

LOOP AT TD_LIFNR INTO TH_LIFNR.
AT NEW LIFNR.
WRITE:/10 TH_LIFNR-LIFNR.
WRITE:/ ‘The next is new lifnr.’.
ENDAT.
ENDLOOP.


http://www.chinavalue.net/Article/Archive/2007/1/18/54443_2.html
在写abap 的过程中,可能需要统计,求和等那么如何实现呢?其实在loop … endloop 中间,有个AT ,<…>,ENDAT循环. 其中的包括: FRIST, LAST, NEW , END OF.这些可以用来进行内表中按某个字段进行分组统计.
FIRST 内 表的第一行
LAST 内 表的最后一 行
NEW 行组 的开头,与 字段 和 剩余字段中 的内容相同
END Of 行组 的结尾,与 字段 和 剩余字段中 的内容相同

AT - ENDAT 块中的语句 块使用这些 行条件代表 预定义的控 制结构。用 户可以使用 它们处理内 表中的控制 断点,而不 必使用 编程分支和循环 中所述的控 制语句自己 编程。
在 AT - ENDAT 语句块中, 工作区域没 有用当前表 格行进行填 充。初始化 所有不是标 准关键字部 件的字段( 参见
标识表格行 )。对于行 条件 FIRST 和 LAST, 系统用星号 () 改写所有标 准关键字段 。对于行条 件 NEW 和 END OF ,系 统用星号 () 改写所有出 现在工作区 域中指定字 段 右边的标准 关键字段。 用户可根据 自己的需求 在 AT - ENDAT 语句块中填 充工作区域 。

DATA: BEGIN OF LINE,
COL1 TYPE C,
COL2 TYPE I,
COL3 TYPE I,
END OF LINE.
DATA ITAB LIKE LINE OCCURS 10.
LINE-COL1 = A.
DO 3 TIMES.
LINE-COL2 = SY-INDEX.
LINE-COL3 = SY-INDEX ** 2.
APPEND LINE TO ITAB.
ENDDO.
LINE-COL1 = B.
DO 3 TIMES.
LINE-COL2 = 2 * SY-INDEX.
LINE-COL3 = ( 2 * SY-INDEX ) ** 2.
APPEND LINE TO ITAB.
ENDDO.
LOOP AT ITAB INTO LINE.
WRITE: / LINE-COL1, LINE-COL2, LINE-COL3.
AT END OF COL1.
SUM."按Col1 求和.
ULINE.
WRITE: / LINE-COL1, LINE-COL2, LINE-COL3.
SKIP.
ENDAT.

AT LAST.
SUM."总求和.
ULINE.
WRITE: / LINE-COL1, LINE-COL2, LINE-COL3.
ENDAT.
ENDLOOP.
其输出为:
A 1 1
A 2 4
A 3 9


A 6 14

B 2 4
B 4 16
B 6 36


B 12 56


  • 18 70
ABAP 的 AT NEW 语法 对于AT END OF,我们也来看一个例子:首先是按照werks工厂来排序内表,AT END OF意思是,当我的这条werks有更改了,也就是说可能1-5条工厂都是001,到第六条工厂变成002了,那我这个第五条就是end of werks了。解释起来就是,我有一个内表itab里面有很多行数据,我现在一条一条的loop,当我里面要考虑的字段field的值变了,那这个AT NEW就被触发了。然后我就要执行一定的操作咯。当我们在LOOP里面处理数据的时候,经常要执行的是当一个字段值改变了,然后我们怎么怎么做。 阅读详情

相关推荐

告别AT NEW/AT END!用LOOP GROUP BY重构老旧ABAP代码的3种场景

本文探讨了如何利用ABAP的LOOP GROUP BY语法重构老旧代码中的AT NEW/AT END逻辑。通过对比三种典型场景(层级报表、复杂条件分组、数据聚合转换),详细阐述了GROUP BY在代码清晰度、可维护性和扩展性方面的优势,为SAP开发者提供了现代化、声明式的分组循环解决方案。

CAT789的专栏 357

ABAP: AT ... ENDAT的使用

在ABAP报表程序中,经常会涉及到内表字段的统计。而统计一般会以一个或多个Key字段为节点,统计其他某些数值类型字段。这里我们就会用到AT<level>.. ENDAT。这里<LEVEL>包括: new , first , last , end of .

风月孤辰的SAP文档 2万+

别再死记硬背了!用这个ABAP LOOP里的‘分组触发器’(AT NEW/END)搞定报表小计

本文深入解析ABAP开发中的AT NEW/END分组触发器,帮助开发者高效实现多级报表分组与小计功能。通过实战案例演示如何利用AT NEW、AT END OF等语句自动识别数据边界,大幅简化代码逻辑,提升SAP ABAP报表开发效率与可维护性。

weixin_30443813的博客 385

SAP ABAP 关于 AT NEW /AT LAST / AT END /AT FIRST的用法

SAP ABAP 关于 AT NEW /AT LAST / AT END /AT FIRST的用法

月阴荒的博客 4122

别再死记硬背了!用这3个真实业务场景,彻底搞懂SAP ABAP里的AT NEW和AT END

本文通过3个真实业务场景深入解析SAP ABAP中的AT NEW和AT END控制级语句,包括销售订单分组汇总、物料批次状态变更统计和财务凭证行项目小计。这些实战案例帮助开发者避免常见陷阱,掌握如何高效使用这些语句处理数据分组和汇总,提升ABAP编程效率。

weixin_28725553的博客 358

SAP学习7--ABAP Report程序

1.我们先 /nse38 进入来

yuxiao198808的专栏 2516

SAP ABAP基础语法-AT NEW/END OF学习(七)

3 使用at new, at first, at last, at end of的时候要注意:loop的时候不能加条件;手动实现at new, at end of的时候,需要注意,容易出错,尤其是在at end of的时候。在se11浏览数据的时候,显示数据的画面是使用内部形式,当detail overview的时候,则是外部形式。f 是内表的一个字段,当f字段或者f字段左边的字段内容发生变化是该事件后面的语句都会执行。其使用:定义内表,从setleaf中将set的内容读入到内表中,然后再在程序中使用。

SAP ABAP开发技能记录分享 3117

ABAP AT NEW 关键字的用法

AT NEW通常与结构一同使用,目的是在循环遍历内表时,每当遇到指定字段值变更时触发某些操作。这种机制特别适用于处理分组汇总、分组报告或者在数据集中标识出新的数据分组。AT NEW关键字是 ABAP 开发者的强大工具,能够优化数据处理逻辑,提高代码的可读性和效率。通过上述示例,我们可以看到其在实际应用中的灵活性和实用性。掌握AT NEW,就是掌握了处理分组数据、简化报告逻辑的关键技巧之一。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 803

SAP ABAP AT NEW 和AT END OF的用法[转]

今天改程序使用AT NEW,结果发现出来一堆******,网上查询后才知道,AT NEW只能应用于内标的第一个字段,而我用的正好不是第一个。 以下是转来的帖子,转自:http://blog.163.com/fuwa_beijing/blog/static/504675142010613215021/ 1 使用binary search之前,需要sort,并且sort by ascend

abap军哥 2930

springcloud+nacos+gateway+oauth2小聚会

在微服务工程中,Nacos作为目前主流的注册中心和配置中心,Spring Cloud Gateway作为目前主流的网关,下面引入spring security+oauth2+jwt作为认证和授权中心,进行简单的聊聊。

ldcaws的专栏 2643

scGPT实战指南:如何用生成式AI加速你的单细胞多组学研究?

本文提供了scGPT在单细胞多组学研究中的实战指南。详细介绍了从环境部署、数据预处理到细胞类型注释与扰动预测等核心任务的操作流程。通过利用生成式AI和Transformer基础模型,scGPT能够显著加速分析,并提升细胞注释的准确性及基因调控网络推断的深度,为研究人员提供了强大的AI分析引擎。

weixin_29215815的博客 402

AT NEW和AT END OF

【博主SAP/ABAP交流群689746838】   假设内表gt_ab有 col1,col2,col3三个字段。 DATA gt_ab TYPE STANDARD TABLE OF ty_ab.”内表 DATA gs_ab TYPE ty_ab. ”结构   第一条记录:col1=’1000’,col2=’AAA1’,col3=1 第二条记录:col1=’1000’,col2=’AA...

鸣鸣专栏 1万+

【WRF-CMAQ实战指南】从环境配置到测试案例运行全解析

本文详细解析了WRF-CMAQ从环境配置到测试案例运行的全过程,包括系统环境检查、依赖库安装、源码获取与项目初始化、关键配置技巧、编译实战与排错、测试案例运行验证等关键步骤。通过实战指南,帮助用户快速掌握WRF-CMAQ的安装和运行技巧,提升空气质量模拟的效率。

year5的博客 244

[SAP ABAP] LOOP中的AT NEW 与 AT END OF

本文主要讲解SAP ABAP中的循环LOOP中的AT NEW 与 AT END OF的相关知识点

Hudas的博客 1764

C# Code-Behind 技术全面解析

Code-Behind 是 ASP.NET Web Forms 中的一种技术模式,通过将用户界面标记(.aspx文件)与程序逻辑代码(.aspx.cs文件)分离,实现表现层与逻辑层的解耦。其核心思想是前端展示与后台逻辑的物理文件分离,通过ASP.NET编译器将两者合并编译成一个Page类并执行。Code-Behind 的优势包括较好的代码组织、较高的开发效率,尤其适合快速开发数据驱动应用。然而,与现代开发模式如ASP.NET MVC、ASP.NET Core和Blazor相比,Code-Behind 在可维

记录学习的过程 956

15、电科院FTU检测标准学习笔记-基本性能

作者简介:本人从事电力系统多年,岗位包含研发,测试,工程等,具有丰富的经验在配电自动化验收测试以及电科院测试中,本人全程参与,积累了不少现场的经验。

sixtome 1864

AT NEW 和AT END OF的用法

AT NEW 和AT END OF的用法 qmhiro - by - 18 五月, 2008 07:53 SAP ABAP小结 ============================================...

congmomao7663的博客 1935

在 SAP HANA 与 HANA Cloud 中,用 SQL DDL 创建数据库视图:从设计时工件到运行时对象的全链路实践

本文介绍了在SAP HANA中通过HDI容器使用DDL定义视图的方法。主要内容包括:1)采用.hdbview设计时工件存储视图定义,构建时自动转换为运行时视图,实现版本控制和权限隔离;2)开发前需准备HDI容器、MTA项目及配置.hdiconfig文件;3)详细说明.hdbview语法结构,重点讲解WITH READ ONLY和WITH STRUCTURED PRIVILEGE CHECK的使用场景;4)提供了从创建文件到构建验证的完整流程示例;5)强调跨容器访问时需通过.hdbgrants为#OO用户授予

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 269

ABAP - AT END OF 的使用

疑惑了很久的at end of 算是弄明白了……哈哈 TYPES: begin of ty_tab ,num(3) type i,str(3) type c,end of ty_tab.data: gw_tab TYPE ty_tab ,gt_tab TYPE TABLE OF ty_tab WITH HEADER LINE.data: gt_out TYPE TA...

anqin8523的博客 2834

(代码可运行)半导体器件和工艺模拟 使用Silvaco设计构建NMOS并提取各项工艺及器件参数

win10。

qq_20388971的博客 108

rk3506上移植lvgl应用

本文介绍在RK3506开发板上移植和运行LVGL图形库的方法。

m0_60805802的博客 1157

SAP ABAP -LOOP GROUP BY /AT END OF分组

新语法:在开发过程中,有的需求会让求分组求和,或者一些逻辑的运算,所以现在来了。拿来直接用就行,这里是按照dd分组来给序号!,具体跟需求方实际出发。还是那句话,具体业务具体分析!老的语法 AT END OF。以下是一个小小的DEMO。

weixin_45632034的博客 1277

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

SAP ABAP 基础语法随笔

SAP ABAP 基础笔记

qq_45063256的博客 4392

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

[SAP ABAP] ABAP基础语法

本问主要讲解SAP ABAP中的基础语法结构,ABAP注释

Hudas的博客 8183

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

ABAP使用 AT FIRST , AT NEW, AT THE END OF , AT LAST 例子

直接复制代码例子去看 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

weixin_38500922的博客 1460

ABAP开发-SNRO+ABAP新语法

SAP凭证号码的指定分为外部给号和内部给号,SAP提供了自动编号工具-SNRO,能跟用户需求设定并自动生成一组唯一的编号Internal number range即内部给号,指系统根据预先维护好的号码范围(只能是阿拉伯数字)依序给号,给出已有数字的下一编号External number range即外部给号,后台配置时指定一个号码范围(可以仅含阿拉伯数字,也可以阿拉伯数字和字母混合,前台业务处理时,操作者壬戌要人为指定给系统一个可用编号NUMBER RANGE的通用TCODE:SNRO。

weixin_52203666的博客 2105
上一篇: ABAP入门----以簇方式存储数据对象
下一篇: 前后端分离,后端用springboot遇到的跨域问题
programer_bei
博客等级 码龄11年 13粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值