IMPORT语句
IMPORT {p1 = dobj1 p2 = dobj2 ...} | {p1 TO dobj1 p2 TO dobj2 ...} | (ptab)
FROM | { MEMORY ID id }
| { DATABASE dbtab(ar) [TO wa] [CLIENT cl] ID id }
| { SHARED MEMORY dbtab(ar) [TO wa] [CLIENT cl] ID id }
| { SHARED BUFFER dbtab(ar) [TO wa] [CLIENT cl] ID id }
从簇数据表中读取数据,各项参数与EXPORT是一样的,请参考EXPORT各项解释
TYPES:BEGIN OF tab,
col1 TYPE i,
col2 TYPE i,
END OF tab.
DATA:wa_indx TYPE demo_indx_table,
wa_itab TYPE tab,
itab TYPE STANDARD TABLE OF tab.
IMPORT tab = itab FROM DATABASE demo_indx_table(sq) TO wa_indx ID 'TABLE'.
WRITE: wa_indx-timestamp, wa_indx-userid.
ULINE.
LOOP AT itab INTO wa_itab.
WRITE: / wa_itab-col1, wa_itab-col2.
ENDLOOP.
实例二:
TABLES indx.
DATA: BEGIN OF jtab OCCURS 100,
col1 TYPE i,
col2 TYPE i,
END OF jtab.
"注意:i_tab的名称不能是其他的,必须与EXPORT语句中的分类
"存储标签名一样。如果i_tab本身又是一个jtab类型的内表,则
"TO后面的jtab可以省略
IMPORT i_tab TO jtab FROM DATABASE indx(hk) ID 'Key'.
"注:在该程序中并没有明显的为indx工作区设置值,但由于使用了
"TABLES indx.语句定义了与indx簇数据库表同名的结构变量,所以
"上面IMPORT会默认加上使用 TO indx 选项
WRITE: / 'AEDAT:', indx-aedat,
/ 'USERA:', indx-usera,
/ 'PGMID:', indx-pgmid.
SKIP.
WRITE 'JTAB:'.
LOOP AT jtab FROM 1 TO 5.
WRITE: / jtab-col1, jtab-col2.
ENDLOOP.
AEDAT: 2011.10.12
USERA: ZHENGJUN
PGMID: YJZJ_TEST2
JTAB:
1 1
2 4
3 9
4 16
5 25
IMPORT DIRECTORY语句
IMPORT DIRECTORY INTO itab FROM DATABASE dbtab(ar) [TO wa] [CLIENT cl] ID id.
该语句的作用用来读取存储到簇数据表中的变量信息,如存储名是什么、以什么样的类型存储的、数据长度等(有点类似反射)。itab 为cdir词典类型的内表,其结构与各字段作用:
Component | Type | Meaning |
NAME | CHAR(30) | Name of the parameter under which a data object was saved. |
OTYPE: | CHAR(1) | General type of the data object saved. The following values are permitted: "F" for elementary, flat data objects, "G" for strings, "R" for flat structures, "S" for deep structures, "T" for internal tables with flat row type and "C" for tables with a deep row type. |
FTYPE | CHAR(1) | More specific type of the data object saved. For elementary data objects and internal tables with a elementary row type, the data or row type is returned in accordance with the table of return values fromDESCRIBE FIELD ... TYPE ("a", "b", "C", "D", "e", "F", "g", "I", "N", "P", "s", "T", "X", "y"). In the case of flat structures and internal tables with flat structured row types, "C" is returned. In the case of deepstructures and internal tables with deep structured row types, "v" is returned. In the case of a table that has an internal table as a row type, "h" is returned. |
TFILL | INT4 | Length filled of the saved data object. For strings the length of the content in bytes is returned and for internal tables the number of rows is returned. The value 0 is returned for other data objects. |
FLENG | INT2 | Length of saved data object or saved table row in bytes. The value 8 is returned for strings. |
DATA: f1 TYPE decfloat16,
f2 TYPE TABLE OF i,
f3 TYPE spfli.
DATA itab TYPE STANDARD TABLE OF cdir.
DO 10 TIMES.
APPEND sy-index TO f2.
ENDDO.
EXPORT par1 = f1 par2 = f2 par3 = f3 TO DATABASE demo_indx_table(hk) ID 'HK'.
IMPORT DIRECTORY INTO itab FROM DATABASE demo_indx_table(hk) ID 'HK'.
NAME | OTYPE: | FTYPE | TFILL | FLENG |
"PAR1" | "F" | "a" | 0 | 8 |
"PAR2" | "T" | "I" | 10 | 4 |
"PAR3" | "R" | "C" | 0 | 168 |
DELETE FROM语句
DELETE FROM { {MEMORY ID id}
| {DATABASE dbtab(ar) [CLIENT cl] ID id}
| {SHARED MEMORY dbtab(ar) [CLIENT cl] ID id}
| {SHARED BUFFER dbtab(ar) [CLIENT cl] ID id} }.
用来清理EXPORT语句的存储的数据
其中DELETE FROM MEMORY ID id.与FREE MEMORY ID id.作用一样
DATA: id TYPE c LENGTH 4 VALUE 'TEXT',
text1 TYPE string VALUE 'Tina',
text2 TYPE string VALUE 'Mike'.
EXPORT p1 = text1 p2 = text2 TO SHARED BUFFER demo_indx_table(xy) ID id.
IMPORT p1 = text2 p2 = text1 FROM SHARED BUFFER demo_indx_table(xy) ID id.
...
DELETE FROM SHARED BUFFER demo_indx_table(xy) ID id.
"此语句会执行后,sy-subrc返回4
IMPORT p1 = text2 p2 = text1 FROM SHARED BUFFER demo_indx_table(xy) ID id.