请教大家一个问题:ABAP工作区与表工作区的区别?
1.比如data:begin of txt x type i,
y type c,
end of txt.txt
就是一个工作区是吗?
into时只能记录一条信息,append就可以多条信息是吧,
date txt1 type table of txt
如果Tables txt1.就是一个表区域是不?Tables txt这个是不是一个表工作区呢?
然后modify txt1 from txt就是修改一条数据modify txt1 from table txt就是修改多条数据是吗?
内表(internal table)和工作区(work area)的区别ABAP/4的Internal Table如同其他语言的数组结构,在操作上可以有复制,删除,新增等功能,可以存很多条记录,并且ABAP的这种用法,对行数没什么限制。WORK AREA就是其他语言的结构,象自定义的一个类型一样,但一旦创建一个Internal Table之后,WORK AREA就成了外界跟Intertal Table的交流口,每条记录的进入和取出都得通过它。并且在清除它们的时候要分开来清除。要用 MODIFY 语句更改行 ,请使用:语法MODIFY [FROM ] [INDEX ].FROM 选项中指定 的工作区域 代替 中的行。如 果表格有表 头行,可以 忽略 FROM 选项。这样 ,表格工作 区域就代替 行。
abap中 结构 和 工作区有什么区别
结构是用SE11 来创建的 工作区是程序中处理的一个中间结果 只存放一条数据。 而定义工作区的时候可能会引用到结构
追问
Data : begin of stru_ztaly,
Name(10) type c,
……
End of stru_ztaly.“结构
DATA: T like stru_ztaly. "工作区
我还想请教一下就是 结构和内表的区别 ?
我们定义一个内表的时候后面加上with header line 在定义的时候同时生成一个同名的结构为什么不是说同名的工作区呢。搞的很混请大侠解释一下 谢谢。
这样也是可以定义结构的
回答
结构是一种数据类型。内表是存放数据的。
比如
Data : begin of stru_ztaly,
Name(10) type c,
End of stru_ztaly.“结构
DATA: T like stru_ztaly. "工作区
stru_ztaly 是结构 只有程序在运行的时候 电脑内存存在这个结构不能存放数据 只能该程序引用 同时内表也存在可以存放数据
工作区只能存放一条数据
如果你用SE11创建结构,就一直都存在,每个程序都能引用!
data: begin of gwa_tab1,
num type num04,“学号
name1 type string,”姓名
end of gwa_tab1
data: begin of gwa_tab2,
num type num04,“学号
fens type p,”分数
end of gwa_tab3.
data: begin of gwa_tab3,
num type num04,“学号
name1 type string,”姓名
fens type p,“分数
end of gwa_tab3.
data: gwa_tab1 like table of gwa_tab1,"内表1
data: gwa_tab2 like table of gwa_tab2,"内表2
data: gwa_tab3 like table of gwa_tab3,"内表3
我现在把内表1和内表2的数据放到内表3中
loop at gt_tab1 into gwa_tab1.
MOVE-CORRESPONDING gwa_tab1 to gwa_tab3."把相同的字段的值复制到gwa_tab3中
read table gwa_tab2 into gwa_tab2 with key num = gwa_tab1-num.
if sy-subrc eq 0
gwa_tab3-fens = gwa_tab2-fens.
endif.
append gwa_tab3 to gt_tab3.
endloop.
这样就把两个表中 的数据放到一个表中了
追问
哦 谢谢 。我还想问一下就是 我们什么时候要用工作区什么时候又用结构呢。
回答
你在定义工作区的时候要用结构
循环读取内表数据的时候要用工作区或者往内表添加数据的时候要用工作区
比如
data: begin of gwa_tab3,
num type num04,“学号
name1 type string,”姓名
fens type p,“分数
end of gwa_tab3.
你用DATA 语法的话 gwa_tab3 就是一个工作区
types: begin of ty_tab3,
num type num04,“学号
name1 type string,”姓名
fens type p,“分数
end of ty_tab3.
但是你如果用TYPES的 ty_TAB3就是一个结构
然后用DATA: GWA_TAB3 LIKE TY_TAB3 GWA_TAB3就是工作区了
例如
append gwa_tab3 to gt_tab3.
这里是往内表添加数据用到了GWA_TAB3 它是工作区
loop at gt_tab1 into gwa_tab1.
这里是循环读取内表GT_TAB1的数据用到GWA_TAB1 也是工作区
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/18105.html