ABAP对内表操作要通过工作区域进行的疑问
Q1:为什么对于内表的操作要在工作区进行。Q2:按照这样的规定,那么像:SELECT*INTOCORRESPONDINGFIELDSOFTABLEITABFROMMARA...
Q1:为什么对于内表的操作要在工作区进行。
Q2:按照这样的规定,那么像:
SELECT * INTO CORRESPONDING FIELDS OF TABLE ITAB
FROM MARA
WHERE xxxxxxxxx
这样的语句不就是在直接对ITAB这个内表进行了直接的操作吗? 展开
Q2:按照这样的规定,那么像:
SELECT * INTO CORRESPONDING FIELDS OF TABLE ITAB
FROM MARA
WHERE xxxxxxxxx
这样的语句不就是在直接对ITAB这个内表进行了直接的操作吗? 展开
- 你的回答被采纳后将获得:
- 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏5(财富值+成长值)
1个回答
展开全部
首先你要理解什么是内表,什么是工作区;
因为在ABAP中常用的SQL是SAP自带的OPEN SQL,它与NATIVE SQL不同,还要多一层解析的过程。因此,在ABAP中使用多表JOIN(>3)的效率远小于将数据存储到内表后,再对内表进行后续的操作。
而内表,实际上就是一个临时存储空间,有效的范围是当前程序;
而工作区,实际上就是一个结构,它与内表的区别就是,内表存放的是多条记录,而工作区是一条;
针对Q1:对于大多数的处理内表是无法批量更新的,因此内表的操作要将数据放在工作区进行,然 后处理完后更新到内表。
针对Q2:你的这个SQL只是将数据存放到内表中,并没有做任何其他的操作。
谢谢~O(∩_∩)O~
因为在ABAP中常用的SQL是SAP自带的OPEN SQL,它与NATIVE SQL不同,还要多一层解析的过程。因此,在ABAP中使用多表JOIN(>3)的效率远小于将数据存储到内表后,再对内表进行后续的操作。
而内表,实际上就是一个临时存储空间,有效的范围是当前程序;
而工作区,实际上就是一个结构,它与内表的区别就是,内表存放的是多条记录,而工作区是一条;
针对Q1:对于大多数的处理内表是无法批量更新的,因此内表的操作要将数据放在工作区进行,然 后处理完后更新到内表。
针对Q2:你的这个SQL只是将数据存放到内表中,并没有做任何其他的操作。
谢谢~O(∩_∩)O~
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询