1 / 19

ABAP 培训

ABAP 培训. 祝汉武 2006-10-13. 培训课程计划. 第二天 内表概念 内表定义 内表使用 数据库基础 提取数据( OPEN SQL ) 练习. 内表概念. 内表在在 sap 中使用非常广泛;在标准程序中大量使用,在我们的实际开发中,几乎每个程序都会用到。 在 sap 中,内表是非常灵活的大批量数据的管理形式,用于在程序运行期间管理一组结构相同的数据。可以象关系型数据表一样进行增删减等操作。 程序对内表的行操作不能直接进行 , 必须通过一种接口来传输 , 这个接口就是工作区. 内表定义. 定义一个结构,然后 type/like 这个结构

ramla
Download Presentation

ABAP 培训

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ABAP培训 祝汉武 2006-10-13

  2. 培训课程计划 • 第二天 • 内表概念 • 内表定义 • 内表使用 • 数据库基础 • 提取数据(OPEN SQL) • 练习

  3. 内表概念 • 内表在在sap中使用非常广泛;在标准程序中大量使用,在我们的实际开发中,几乎每个程序都会用到。 • 在sap中,内表是非常灵活的大批量数据的管理形式,用于在程序运行期间管理一组结构相同的数据。可以象关系型数据表一样进行增删减等操作。 • 程序对内表的行操作不能直接进行,必须通过一种接口来传输,这个接口就是工作区.

  4. 内表定义 • 定义一个结构,然后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.

  5. 内表使用 • 工作区 • 内表是按行进行访问的。必须使用某个工作区域作为与表格互相传输数据的接口 。

  6. 内表使用 • 工作区 可分为带表头行的内表和不带表头行的内表

  7. 内表使用 • 添加数据 • APPEND:直接向表中添加数据 1. APPEND [wa TO|INITIAL LINE TO] itab[ASSIGNING |REFERENCE INTO dref]. 2. APPEND LINES OF itab1 [FROM idx1] [TO idx2] TO itab2.

  8. 内表使用 • 添加数据(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.

  9. 内表使用 • 添加数据 • Insert:直接向表中添加数据 • 要将部分或全部内表插入到另一个内表中,请 使用INSERT语句,用法如下: INSERT LINES OF <itab1> [FROM <n1>] [TO <n2>] INTO <itab2> [INDEX <idx>]. • 要在内表行之前插入新行,请使用INSERT语句,用法如下: INSERT [<wa> INTO|INITIAL LINE INTO] <itab> [INDEX <idx>].

  10. 内表使用 • 添加数据(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.

  11. 内表使用 • 删除数据 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.

  12. 内表使用 • 删除数据 例: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.

  13. 内表使用 • 修改数据 • 要用 MODIFY语句更改行请使用: MODIFY <itab> [FROM <wa>] [INDEX <idx>]. • 修改指定几个字段 MODIFY itab [FROM wa] TRANSPORTING f1 ... fn WHERE cond.

  14. 内表使用 • 修改数据 例: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.

  15. 数据库基础 • 数据库是规则的信息数据的集合 • 最常用的数据库——关系数据库 • 实体 • 关系 • 关系数据库中的表 • 字段 • 记录 • 数据库的存取(SQL)

  16. 数据库基础 • 表:字段定义 (MARA部分字段)

  17. 数据库基础 • 表:记录 (MARA部分记录)

  18. 提取数据(OPEN SQL) • SQL——结构化查询语言 • SELECT • UPDATE • INSERT • DELETE • 简单的SQL查询 • 连接查询、子查询

  19. 提取数据(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’)

More Related