程序间数据共享与传递(2):EXPORT/IMPORT、SAP/ABAP Memory

本文详细介绍了ABAP中使用IMPORT与EXPORT语句进行数据导出与导入的方法,包括不同类型数据表的操作方式及参数说明,并展示了如何利用IMPORT DIRECTORY语句获取存储信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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(sqTO wa_indx ID 'TABLE'.
WRITEwa_indx-timestampwa_indx-userid.
ULINE.
LOOP AT itab INTO wa_itab.
  
WRITE/ wa_itab-col1wa_itab-col2.
ENDLOOP.

 

实例二:

TABLES indx.
DATABEGIN 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(hkID '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 TO 5.
  
WRITE/ jtab-col1jtab-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.

 

DATAf1 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(hkID 'HK'.
IMPORT DIRECTORY INTO itab FROM DATABASE demo_indx_table(hkID '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.作用一样

 

DATAid    TYPE c LENGTH VALUE 'TEXT',
      text1 
TYPE string     VALUE 'Tina',
      text2 
TYPE string     VALUE 'Mike'.

EXPORT p1 text1 p2 text2 TO SHARED BUFFER demo_indx_table(xyID id.

IMPORT p1 text2 p2 text1 FROM SHARED BUFFER demo_indx_table(xyID id.

...

DELETE FROM SHARED BUFFER demo_indx_table(xyID id.
"此语句会执行后,sy-subrc返回4
IMPORT p1 text2 p2 text1 FROM SHARED BUFFER demo_indx_table(xyID id.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值