*&---------------------------------------------------------------------*
*& Report YFQQ20110810003
*&
*&---------------------------------------------------------------------*
*&
*&内表基本操作
*&---------------------------------------------------------------------*
REPORT YFQQ20110810003.
TYPES MYITAB TYPE I OCCURS10."创建了一个简单的内表
*创建一个多元化数据的内表字段串类型*
TYPES :BEGIN OF LINE,
COL1 TYPE I,
COL2(20) TYPE C,
COL3 TYPE D,
END OF LINE.
*创建内表*
TYPES MYITAB1 TYPE LINE OCCURS10.
*创建学生基本内表字段串类型*
DATA:BEGIN OF STUDENT OCCURS10,
STUID(20) TYPE C,
STUNAME(30) TYPE C,
STUSEX(10) TYPE C,
STUMAJOR(50) TYPE C,
STUOLD TYPE I,
END OF STUDENT.
*创建内表*
"TYPES STUDENT TYPE BASICITAB OCCURS 10.
*使用APPEND填充内标*
DO10TIMES.
"APPEND INITIAL LINE TO STUDENT."添加默认值
STUDENT-STUID = SY-INDEX.
STUDENT-STUNAME = SY-UNAME.
STUDENT-STUSEX = '男'.
STUDENT-STUMAJOR = '计算机应用'.
STUDENT-STUOLD = 26.
APPEND STUDENT.
ENDDO.
LOOP AT STUDENT.
WRITE: / STUDENT-STUID,STUDENT-STUNAME,STUDENT-STUSEX,STUDENT-STUMA JOR,STUDENT-STUOLD.
WRITE / '------------------------------------------------------------------------------------------------------------------------------------------------------'.
ENDLOOP.
WRITE:
/'内表操作:',SY-UNAME,/'作'.
*&---------------------------------------------------------------------*
*& Report YFQQ20110811001
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT YFQQ20110811001.
*通过引用创建内表*
*TYPES: BEGIN OF LINE,
* COL1 TYPE I,
* COL2 TYPE I,
* COL3 TYPE I,
* END OF LINE.
*
*TYPES ITAB TYPE LINE OCCURS 10.
* DATA TAB1 TYPE ITAB.
* DATA TAB2 LIKE TAB1 WITH HEADER LINE.
*
*
*TYPES:BEGIN OF A,
* COLA TYPE I,
* COLB(20) TYPE C,
* COLC TYPE D,
* END OF A.
*
*TYPES B TYPE A OCCURS 10.
*
*DATA C TYPE B.
*
*DATA D LIKE C WITH HEADER LINE.
*实用collect填充内表。*
DATA:BEGIN OF LINE OCCURS10 ,
COL1 TYPE I,
COL2(20) TYPE C,
COL3(30) TYPE C,
END OF LINE.
LINE-COL1 = 20.
LINE-COL2 = 'FUQIANG'.
LINE-COL3 = 'GOODBOY'.
COLLECT LINE.
WRITE: / 'COLLECT操作:', LINE-COL1 , LINE-COL2 , LINE-COL3 . *实用insert插入内表*
DATA:BEGIN OF LINE1 OCCURS10,
COL1 TYPE I,
COL2(30) TYPE C,
COL3(30) TYPE C,
END OF LINE1.
LINE1-COL1 = 90.
LINE1-COL2 = 'HHHHHH'.
LINE1-COL3 = 'UUUUUUU'.
" INSERT INITIAL LINE INTO LINE1 INDEX 1.
WRITE: 'INSERT 操作:', / LINE1-COL1, LINE1-COL2,LINE1-COL3. DATA: BEGIN OF LINE3,
COL1 TYPE I,
COL2 TYPE I,
END OF LINE3.
DATA ITAB LIKE LINE3 OCCURS10.
DO2TIMES.
LINE3-COL1 = SY-INDEX.
LINE3-COL2 = SY-INDEX ** 2.
APPEND LINE3 TO ITAB.
ENDDO.
LINE3-COL1 = 11. LINE3-COL2 = 22.
INSERT LINE3 INTO ITAB INDEX2.
INSERT INITIAL LINE INTO ITAB INDEX1.
LOOP AT ITAB INTO LINE3.
WRITE: / 'INSERT 操作:', SY-TABIX, LINE3-COL1, LINE3-COL2. ENDLOOP.
*实用Append插入内表*
DATA: BEGIN OF LINE2 OCCURS10 ,
COL1 TYPE I,
COL2(30) TYPE C,
COL3(50) TYPE C,
END OF LINE2 .
LINE2-COL1 = 100.
LINE2-COL2 = 'fqq'.
LINE2-COL3 = 'HAHA'.
APPEND LINE2.
WRITE: / 'APPEND 操作:', LINE2-COL1, LINE2-COL2,LINE2-COL3. *创建带表头的内表*
DATA: BEGIN OF LINE1,
COL1(3) TYPE C,
COL2(2) TYPE N,
COL3 TYPE I,
END OF LINE1.
DATA TAB1 LIKE LINE1 OCCURS10.
DATA: BEGIN OF LINE2,
FIELD1(1) TYPE C,
FIELD2 LIKE TAB1,
END OF LINE2.
DATA TAB2 LIKE LINE2 OCCURS1.
LINE1-COL1 = 'abc'. LINE1-COL2 = '12'. LINE1-COL3 = 3.
APPEND LINE1 TO TAB1.
LINE1-COL1 = 'def'. LINE1-COL2 = '34'. LINE1-COL3 = 5.
APPEND LINE1 TO TAB1.
LINE2-FIELD1 = 'A'. LINE2-FIELD2 = TAB1.
APPEND LINE2 TO TAB2.
REFRESH TAB1.
LINE1-COL1 = 'ghi'. LINE1-COL2 = '56'. LINE1-COL3 = 7.
APPEND LINE1 TO TAB1.
LINE1-COL1 = 'jkl'. LINE1-COL2 = '78'. LINE1-COL3 = 9.
APPEND LINE1 TO TAB1.
LINE2-FIELD1 = 'B'. LINE2-FIELD2 = TAB1.
APPEND LINE2 TO TAB2.
LOOP AT TAB2 INTO LINE2.
WRITE: / LINE2-FIELD1.
LOOP AT LINE2-FIELD2 INTO LINE1.
WRITE: / LINE1-COL1, LINE1-COL2, LINE1-COL3.
ENDLOOP.
ENDLOOP.
WRITE /'The program end'.
*附加内表行,就是指把一个内表的多少至多少行插入另一内表或者把一个内表完全附加到另张内表中*