ABAP里面游标的使用

137、ABAP游标与动态SQL <think>我们根据要求,需要生成一篇≤150字的文章摘要。摘要需涵盖ABAP游标与动态SQL的核心内容,包括隐式游标的问题、显式游标批量处理、动态SQL的常见陷阱和优化效果等。要精简扼要。</think>本文以MES系统报表故障为引,剖析ABAP游标与动态SQL的实践要点:隐式游标循环嵌套导致数据库压力大,显式游标配合批量FETCH可大幅提升性能;动态SQL需警惕注入、转义和语法限制,避免滥用EXEC SQL,优先用RANGES或ADBC。总结出“控制游标粒度、规范动态写法”的优化经验,案例结合原理,对 阅读详情

*/Declaring Cursors-c1 and c2

DATA: c1 TYPE cursor,
       c2 TYPE cursor.

DATA: work_area1 TYPE mara,
       work_area2 TYPE mara.

DATA: flag1(1) TYPE c,
       flag2(1) TYPE c.

*/Opening Cursors-c1 and c2
OPEN CURSOR: c1 FOR SELECT matnr ersda ernam
                        FROM mara
                        WHERE ernam = 'RUDISILL',
                c2 FOR SELECT laeda aenam
                        FROM mara
                        WHERE ernam = 'RUDISILL'.
DO.
  IF flag1 NE 'X'.
*/Using the c1 cursor to fetch the data
    FETCH NEXT CURSOR c1 INTO CORRESPONDING FIELDS OF work_area1.

    IF sy-subrc <> 0.
*/Closing the c1 cursor
      CLOSE CURSOR c1.
      flag1 = 'X'.
    ELSE.
      WRITE: / work_area1-matnr, work_area1-ersda, work_area1-ernam.
    ENDIF.
  ENDIF.

  IF flag2 NE 'X'.
*/Using the c2 cursor to fetch the data
    FETCH NEXT CURSOR c2 INTO CORRESPONDING FIELDS OF work_area2.
    IF sy-subrc <> 0.
*/Closing the c2 cursor
      CLOSE CURSOR c2.
      flag2 = 'X'.
    ELSE.
      WRITE: / work_area2-laeda, work_area2-aenam.
    ENDIF.
  ENDIF.
  IF flag1 = 'X' AND flag2 = 'X'.
    EXIT.
  ENDIF.
ENDDO.

 

必须指明这段代码是摘自一本书 《ABAP Handbook》,出自于Kogent learning solution公司,有兴趣的可以到网上购买此书,虽然有点老,但理论的东西讲得比较透彻。


文章地址:http://blog.youkuaiyun.com/liangziyisheng/article/details/7785697

用数据库游标做高性能主从遍历:ABAP OPEN CURSOR 读数法全解析 摘要: 本文探讨了ABAP中利用数据库游标(cursor)高效处理主从结构数据的技巧。通过OPEN CURSOR和FETCH命令实现流式数据读取,避免传统嵌套SELECT循环的性能问题。核心思路是:按主键顺序打开两个游标,外层遍历主表,内层顺序读取从表数据并利用缓存机制处理分组变化。这种方法显著减少了数据库交互次数,将多次点查转化为顺序扫描,特别适合处理VBAK+VBAP等主从关系的大数据量场景。文章还分析了游标工作原理、实现示例代码以及与传统写法的性能对比,为ABAP开发者提供了优化数据读取的有效方案。 阅读详情

相关推荐

ABAP 应用中的隐式数据库提交与游标管理:原理、场景与最佳实践

隐式数据库提交是 SAP 运行时模型中不可回避的一环。当我们深入理解工作进程、对话步骤与远程调用的协同机制后,就能主动设计事务边界,避免游标失效与数据不一致的风险。遵循“在需要之前绝不提交”的原则,配合更新任务、显式清理 GTT 与细粒度异常处理,方能让企业级 ABAP 代码在高度并发与分布式场景下依然稳定可靠。

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

ABAP—游标

游标(CURSOR)也叫光标,在关系数据库中经常使用,在PL/SQL程序中可以用CURSOR与SELECT一起对表或者视图中的数据进行查询并逐行读取。 DATA: c TYPE cursor.[ˈkɜ:sə] DATA: wa TYPE spfli."1、打开游标OPEN CURSOR: c FOR SELECT carrid connid FROM spfli WHERE carrid = '...

Nathan的博客 1403

从 LOOP AT 到自定义游标,ABAP 里到底有没有 Java Iterator

ABAP 提供了多种迭代方式,但设计理念与 Java 不同。常规开发中,LOOP AT 和 FOR...IN 等内置语法已覆盖大多数迭代需求,无需显式创建迭代器对象。ABAP 的迭代状态隐含在循环结构中,而非通过独立迭代器实例维护。对于特殊场景(如树形结构遍历),ABAP 也支持标准的迭代器模式(如 iXML Library 的 create_iterator())。两种语言差异主要体现在:Java 强调统一的集合迭代接口,而 ABAP 更倾向于为不同数据结构提供专门的迭代语法。开发时应根据具体场景选择最符

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

ABAP游标的使用

在Oracle,SQLServer中游标的使用是经常的,所以在ABAP不懂是不行的......     1、声明游标     OPEN CURSOR [WITH HOLD] FOR SELECT            FROM           [WHERE    ]     [GROUP BY ]     [HAVING   ]     [ORDER BY ].

twomeyla博客 4824

CentOS7无网环境实战:MySQL8.0完整离线安装与避坑指南(附依赖包下载)

本文详细介绍了在CentOS7无网环境下MySQL8.0的完整离线安装流程,包括依赖包获取、系统预处理、MySQL二进制安装、服务配置与优化等关键步骤。特别针对离线安装的特殊需求,提供了从依赖包下载到服务调优的全链路解决方案,帮助用户在企业内网或隔离环境中高效部署MySQL数据库。

bush的博客 172

Nangate 45nm FreePDK开源工艺库:从RTL到GDSII全流程实战

在数字IC设计中,标准单元库是连接逻辑综合与物理实现的基石,它定义了每个单元的逻辑功能、时序延迟与物理尺寸。开源EDA工具链的成熟,使得个人也能借助免费工艺套件完整跑通芯片设计流程。Nangate 45nm FreePDK作为一套经典的开源工艺库,凭借结构清晰、配套完善的特性,成为学习数字后端和时序收敛的理想训练场。从综合工具Yosys读取Liberty文件进行逻辑映射,到OpenROAD执行布局布线与时钟树综合,再到使用OpenSTA分析关键路径延迟,这套流程涵盖了数字设计最核心的环节。通过亲手操作,开发

weixin_29168393的博客 270

ABAP的OPEN CURSOR语法

OPEN CURSOR

weixin_45689053的博客 5018

GMSL Strapping Pins CFG0/CFG1 应用

如果 0x13.bit3 = 0, 则是链路没有 Locked,需要去排查下具体问题(通常是工作模式配置问题)如果遇到 Link 无法建立(Locked),电源没有问题的情况下,多半是加串器和解串器的工作模式不匹配。芯片在上电时,会检测这两个管脚的电压,根据不同的电压值,芯片进入到不同的工作模式。一对加串器和解串器,只要工作模式匹配得当,Link Locked,便能够正常工作。ADI 已经充分考虑了用户的需求,尽可能的降低的芯片的使用和配置复杂度。GMSL 的解串器也是类似的配置,具体请参考对应的规格书。

iStoneWalker的博客 1269

ABAP分块取数 CURSOR

【代码】ABAP分块取数 CURSOR。

qq_45063256的博客 498

HP DL380G9 iLO降级Degrated及存储失败storage Failed报错如何解决?

HP DL380G9 iLO降级(Degrated)及存储失败(storage Failed)报错如何处理? ©Lander Zhang 专注外企按需IT基础架构运维服务,IT Helpdesk 实战培训践行者https://blog.51cto.com/lander 2018/09/7 7:30 问题描述 某沙特公司搭建的虚拟化环境中有一台ESXi主机报Storage Fialed警告但是仍...

weixin_34226182的博客 4847

GOM引擎单机传奇架设全攻略——从DBC2000配置到登录器生成

本文详细解析了使用GOM引擎架设单机传奇的完整流程,从DBC2000的安装配置、服务端部署、引擎控制器设置,到登录器生成与客户端补丁放置。文章重点解决了单机架设中的常见问题,如数据库路径配置、IP地址设置及Key.lic文件处理,旨在帮助玩家快速搭建稳定的个人游戏环境,体验GM乐趣。

weixin_28318011的博客 627

ABAP游标CURSOR使用

ABAP游标CURSOR使用

woniu_maggie的博客 586

模式分类识别 | TCN时间卷积神经网络多特征分类预测(Matlab完整程序)

模式分类识别 | TCN时间卷积神经网络多特征分类预测(Matlab完整程序)

前程算法屋的博客 748

【ABAP】游标

*"Native SQL语句不能以句点号结尾; *"不能在EXEC SQL…ENDEXEC间有注释,即不能有星号与双引号的出现; *"参数占位符使用冒号,而不是问号; DATA: ARG1 TYPE STRING VALUE '300'. TABLES: T001. "打开游标 EXEC SQL.   OPEN c1 FOR SELECT MANDT, BUKRS FROM 

少年休闲海 1600

RK3588 hdmiout调试(一)

RK3588 hdmiout调试(一)

目前从事linux驱动开发,多交流多学习吧 5169

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

SAP ABAP游标的使用(示例)

文章转自 http://blog.youkuaiyun.com/szlaptop/article/details/8565285 REPORT  Z_WUWEI_0019.    */DECLARING CURSORS-C1 AND C2    DATA: C1 TYPE CURSOR,        C2 TYPE CURSOR.    DATA: WORK_AREA1 TYPE MARA,     

feijibin的专栏 3234

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

ABAP游标取表数据

abap 游标

cly_apple的专栏 613

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Devexpress16.2.6破解工具

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

SAP ABAP中的游标用法

*"Native SQL语句不能以句点号结尾; *"不能在EXEC SQL…ENDEXEC间有注释,即不能有星号与双引号的出现; *"参数占位符使用冒号,而不是问号; DATA: ARG1 TYPE STRING VALUE '300'. TABLES: T001. "打开游标 EXEC SQL.   OPEN c1 FOR SELECT MANDT, BUKRS FROM T001   WH...

matinal 當冬夜漸暖 。公众号:matinal 669

ABAP游标

DATA: BEGIN OF count_line, carrid TYPE spfli-carrid, count TYPE i, END OF count_line, spfli_tab TYPE TABLE OF spfli. DATA: dbcur1 TYPE cursor, dbcur2...

weixin_30924239的博客 155

ABAP opensql使用游标分包处理例子

【代码】ABAP opensql使用游标分包处理例子。

duangww的博客 126

ABAP--如何通过Oracle游标直接操作Oracle的系统表

<br />原文地址: http://space.itpub.net/15232446/viewspace-582581<br /> <br />未测试, 转贴备查.<br /> <br />-------------以下是转贴内容--------------------------<br />在ABAP编程中,有时候需要利用Native SQL操作数据库表(自定义和非业务数据的表,业务数据表我的建议还是应该通过SAP提供的类、函数,BAPI等技术操作)。下面的例子是通过游标操作Oracle的系统表的代码,

Welcome to Garywang's IT BLOG. 846
上一篇: ABAP-数据库操作OPEN SQL SELECT总结
下一篇: TEXT_CONVERT_XLS_TO_SAP实例
Footloose_
博客等级 码龄10年 254粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值