190 likes | 413 Views
ABAP 培训. 祝汉武 2006-10-13. 培训课程计划. 第二天 内表概念 内表定义 内表使用 数据库基础 提取数据( OPEN SQL ) 练习. 内表概念. 内表在在 sap 中使用非常广泛;在标准程序中大量使用,在我们的实际开发中,几乎每个程序都会用到。 在 sap 中,内表是非常灵活的大批量数据的管理形式,用于在程序运行期间管理一组结构相同的数据。可以象关系型数据表一样进行增删减等操作。 程序对内表的行操作不能直接进行 , 必须通过一种接口来传输 , 这个接口就是工作区. 内表定义. 定义一个结构,然后 type/like 这个结构
E N D
ABAP培训 祝汉武 2006-10-13
培训课程计划 • 第二天 • 内表概念 • 内表定义 • 内表使用 • 数据库基础 • 提取数据(OPEN SQL) • 练习
内表概念 • 内表在在sap中使用非常广泛;在标准程序中大量使用,在我们的实际开发中,几乎每个程序都会用到。 • 在sap中,内表是非常灵活的大批量数据的管理形式,用于在程序运行期间管理一组结构相同的数据。可以象关系型数据表一样进行增删减等操作。 • 程序对内表的行操作不能直接进行,必须通过一种接口来传输,这个接口就是工作区.
内表定义 • 定义一个结构,然后type/like这个结构 TYPES: BEGIN OF , ... <Fi> ..., ...END OF . DATA TYPE STANDARD TABLE OF WITH NON-UNIQUE DEFAULT KEY INITIAL SIZE WITH HEADER LINE. • type/like系统表或者数据库表或者结构 DATA TYPE STANDARD TABLE OF <系统表名> INITIAL SIZE WITH HEADER LINE.
内表使用 • 工作区 • 内表是按行进行访问的。必须使用某个工作区域作为与表格互相传输数据的接口 。
内表使用 • 工作区 可分为带表头行的内表和不带表头行的内表
内表使用 • 添加数据 • APPEND:直接向表中添加数据 1. APPEND [wa TO|INITIAL LINE TO] itab[ASSIGNING |REFERENCE INTO dref]. 2. APPEND LINES OF itab1 [FROM idx1] [TO idx2] TO itab2.
内表使用 • 添加数据(APPEND) 例:DATA: BEGIN OF ITAB OCCURS 10, COL1 TYPE C, COL2 TYPE I, END OF ITAB. DO 3 TIMES. APPEND INITIAL LINE TO ITAB. ITAB-COL1 = SY-INDEX. ITAB-COL2 = SY-INDEX ** 2. APPEND ITAB. ENDDO. LOOP AT ITAB. WRITE: / ITAB-COL1, ITAB-COL2. ENDLOOP.
内表使用 • 添加数据 • Insert:直接向表中添加数据 • 要将部分或全部内表插入到另一个内表中,请 使用INSERT语句,用法如下: INSERT LINES OF <itab1> [FROM <n1>] [TO <n2>] INTO <itab2> [INDEX <idx>]. • 要在内表行之前插入新行,请使用INSERT语句,用法如下: INSERT [<wa> INTO|INITIAL LINE INTO] <itab> [INDEX <idx>].
内表使用 • 添加数据(Insert) 例:DATA: BEGIN OF LINE, COL1 TYPE I, COL2 TYPE I, END OF LINE. DATA ITAB LIKE LINE OCCURS 10. DO 2 TIMES. LINE-COL1 = SY-INDEX. LINE-COL2 = SY-INDEX ** 2. APPEND LINE TO ITAB. ENDDO. LINE-COL1 = 11. LINE-COL2 = 22. INSERT LINE INTO ITAB INDEX 2. INSERT INITIAL LINE INTO ITAB INDEX 1. LOOP AT ITAB INTO LINE. WRITE: / SY-TABIX, LINE-COL1, LINE-COL2. ENDLOOP.
内表使用 • 删除数据 1. DELETE itab. 2. DELETE itab INDEX idx. 3. DELETE itab FROM idx1 TO idx2. 4. DELETE itab WHERE logexp. 5. DELETE ADJACENT DUPLICATES FROM itab.
内表使用 • 删除数据 例:DATA: BEGIN OF LINE, COL1 TYPE I, COL2 TYPE I, END OF LINE. DATA ITAB LIKE LINE OCCURS 10. DO 30 TIMES. LINE-COL1 = SY-INDEX. LINE-COL2 = SY-INDEX ** 2. APPEND LINE TO ITAB. ENDDO. LOOP AT ITAB INTO LINE. IF LINE-COL1 < 28. DELETE ITAB. ENDIF. ENDLOOP. LOOP AT ITAB INTO LINE. WRITE: / SY-TABIX, LINE-COL1, LINE-COL2. ENDLOOP.
内表使用 • 修改数据 • 要用 MODIFY语句更改行请使用: MODIFY <itab> [FROM <wa>] [INDEX <idx>]. • 修改指定几个字段 MODIFY itab [FROM wa] TRANSPORTING f1 ... fn WHERE cond.
内表使用 • 修改数据 例:DATA: BEGIN OF LINE, COL1 TYPE I, COL2 TYPE I, END OF LINE. DATA ITAB LIKE LINE OCCURS 10. DO 3 TIMES. LINE-COL1 = SY-INDEX. LINE-COL2 = SY-INDEX ** 2. APPEND LINE TO ITAB. ENDDO. LINE-COL1 = 10. LINE-COL2 = 10 ** 2 . MODIFY ITAB FROM LINE INDEX 2. LOOP AT ITAB INTO LINE. WRITE: / SY-TABIX, LINE-COL1, LINE-COL2. ENDLOOP.
数据库基础 • 数据库是规则的信息数据的集合 • 最常用的数据库——关系数据库 • 实体 • 关系 • 关系数据库中的表 • 字段 • 记录 • 数据库的存取(SQL)
数据库基础 • 表:字段定义 (MARA部分字段)
数据库基础 • 表:记录 (MARA部分记录)
提取数据(OPEN SQL) • SQL——结构化查询语言 • SELECT • UPDATE • INSERT • DELETE • 简单的SQL查询 • 连接查询、子查询
提取数据(OPEN SQL) • 举例 • SELECT * FROM MARA WHERE MATNR = ‘W30EG8880010’ • SELECT * FROM MARA WHERE MATNR LIKE ‘W30EG888%’ ORDER BY MATNR (DESC) • UPDATE MARA SET MATKL = ‘EG88866’ WHERE MATNR = ‘W30EG8880010’ • DELETE FROM MARA WHERE MATNR = ‘W30EG8880010’ • INSERT INTO MARA(MATNR,MTART ) VALUES (’ W30EG8880010’,’ EG88866’)