程序间数据共享与传递(2):EXPORT/IMPORT、SAP/ABAP Memory
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.
總結
以上是生活随笔為你收集整理的程序间数据共享与传递(2):EXPORT/IMPORT、SAP/ABAP Memory的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 程序间数据共享与传递(1):EXPORT
- 下一篇: 程序间数据共享与传递(3):EXPORT