内表的操作Word格式文档下载.docx
- 文档编号:13435474
- 上传时间:2022-10-10
- 格式:DOCX
- 页数:20
- 大小:113.65KB
内表的操作Word格式文档下载.docx
《内表的操作Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《内表的操作Word格式文档下载.docx(20页珍藏版)》请在冰豆网上搜索。
TYEPS只是定义出一个结构体的类型,它不能存储数据(即它不
是工作区)。
DATA定义出了一个结构体,它可以存储一行数据(即一个工作
区)。
两种关键字不能混用。
1.
用户名用户姓名部门
TYPES:
BEGINOFTY_OUTLIST,
USERLIKEAGR_USERS-UNAME,NAMELIKEADRP-NAME2,"
DEPARTLIKEADCP-DEPARTMENT,
TYPES:
BEGINOFITABOCCURSN,
V1TYPEI,
V2TYPEI,
ENDOFITAB.
工作区(workarea):
程序对内表的操作不能直接进行,必须通过一种接口来传输,
这个接口就是工作区(workarea)
Field1
Field2
Field3
从关系数据库中读取数据到内表各行中,必须先将数据读到工作
区,然后在将工作区中的数据赋给内表的行。
从内表读取数据时,需要用已定位的内表行内容覆盖工作区的内
容,然后在从程序中读取工作区的内容。
所以工作区必须具有和内表的行一致或者可以相互转换的数据
结构(一般是与内表类型相同的结构体)
REPORTdemo_int_tables_append.
*append...to
*下边定义了一个结构体,也就是个工作区
DATA:
BEGINOFwa,
col1
(1)TYPEc,
col2TYPEi,
ENDOFwa.
*下边定义了一个内表itab,(noworkarea,noheaderline)
DATAitabLIKEstandardTABLEOFwa.
DO3TIMES.
wa-col1=sy-index.wa-col2=sy-index**2.
APPENDwaTOitab.
ENDDO.
LOOPATitabINTOwa.
WRITE:
/wa-col1,wa-col2.
ENDLOOP.
Sta.,/Variable
M,.Val.1
d
—WA
Structure:
flat&
not
A
3ITAB
StandardTable[0x2(8)]
▼
表头行(headerline)(又叫隐式工作区)
ABAP为程序员提供一种简单的方法,在创建内表对象的同时可以隐
式的创建一个同名工作区,这个同名工作区就叫做表头行(header
line),其实它和工作区是一样的,只不过定义方法和叫法不同。
笔者不提倡读者使用带有表头行的内表,而是应该总是声明结构相
同的其他数据对象(即显式工作区)作为对内表行操作的中转站。
”
《SAP程序设计》P129
REPORTdemo_int_tables_append.
*append...to
*下边用withheaderline定义了一个和内表itab同名的工作区itab
DATAitabLIKEstandardtableofwawithheaderline.
*DATAitablikewaoccurs0withheaderline.
*上面的这两句是完全一样的定义
itab-col1=sy-index.itab-col2=sy-index**2.
APPENDitab.
*下边的输出的是内表itab中的数据
LOOPATitab.
/itab-col1,itab-col2.
ENDLOOP.
*下边的输出的是同名工作区itab中的数据
其他定义形式:
这种形式也声明了一个标准内表,并分配初始内存大小为10行,OCCURSABAP3.0
之前声明内表的关键字。
(《SAP程序设计》P125“不建议使用,但是由于系统维护时需要接触旧的ABA代码,所以还要介绍”)
*occurs是ABAP3.(之前声明内表的关键字
*这样声明即定义了一个内表WA
*同时WA又带了一个同名的工作区(wa[]代表内表,waf弋表工作区)
BEGINOFwaoccurs10,
APPENDwa.
wa-col1='
x'
.
wa-col2=100.
skip.
LOOPATwa.
茁苗ble
structure:
flatSlnot
OCCURS和WITHHEADERLINE:
OCCUR是声明了一个标准内表(abap3.0以前版本),而withheaderline是使这
个标准内表同时带了同名工作区(即表头行)
REPORTdemo_int_tables_append.
data:
*DATAitabLIKEstandardtableofwa.
*DATAitabLIKEstandardtableofwawithheaderline.
*thespecification"
withheaderline"
cannotbeusedwithtable
types.
*DATAitablikewawithheaderline.
DATAitablikewaoccurs0.
**下边代码会产生错误,因为上面定义的内表itab不带工作区(表头行)
*一个表肯定不能直接write出字段
*write:
*itab和itab[]都代表内表itab,虽然内表itab不带表头行
loopatitab[]intowa.
write:
/wa-col1,wa-col2.
endloop.
因为有了同名工作区而产生的问题:
itab和itab[]
BEGINOFwa,col1
(1)TYPEc,col2TYPEi,
DATAitabLIKEstandardtableofwawithheaderline.
*不是说带表头行的内表,itab代表表头行(工作区),itab[]才代表内*表吗?
*在loopat循环中itab就代表内表,而不是表头行(工作区)
*因为表头行(工作区)就一行,所以不需要也不能loop循环loopatitabintowa.
endloop.
*不管什么时候itab[]都代表内表本身
*在不在loop循环中的时候才是itab代表表头行,而itab[]代表内表本身
*就如后边要讲的moveitabtojtab与moveitab[]tojtab[]的区别write:
同名的工作区的小例子:
1.读取内表数据时候,用了同名工作区做中转站
*这样声明即定义了一个内表WA,
*同时W又带了一个同名的工作区(itab[]代表内表,itab代表工作区)
BEGINOFitaboccurs10,
ENDOFitab.
itab-col1='
itab-col2=100.
*输出工作区itab中的数据
skip.
*loop后边的不管是itab[],还是itab都是内表,*因为工作区(表头行)只有一行,所以是不用循环读取的,*下边的itab是个带工作区(表头行)的内表,
*所以它循环读取的时候是用自己的同名工作区来做中转站的LOOPATitab.
*输出工作区itab中数据
2.读取内表数据时没有用同名工作取做中转站,而是用的另外
定义的工作区wa
*同时W又带了一个同名的工作区(it
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作