SAP系统中有两种内存:
1,ABAP内存
简单说来一个session就是登录SAP系统开的窗口。 可以通过abap内存实现同一session中的数据交换。具体使用到 EXPORT 和IMPORT memory id 语句,这里不详细讲述。
2,SAP内存
在整个登录过程中,可以通过SAP内存实现多个session之间的数据交换。具体使用到EXPORT 和IMPORT DATABASE语句。
本文主要讲一下如何使用EXPORT 和IMPORT DATABASE语句。
EXPORT:
保存数据到SAP内存
EXPORT
{ p1
= dobj1
p2
= dobj2
.
.
.
}
|
{ p1
FROM dobj1
p2
FROM dobj2
.
.
.
}
|
( ptab
)
TO
{
DATABASE
dbtab
( ar
)
[
FROM wa
]
[
CLIENT cl
]
ID
id
}
IMPORT:
从SAP内存中取数据
IMPORT
{ p1
=
dobj1
p2
=
dobj2
.
.
.
}
|
{ p1
TO
dobj1
p2
TO
dobj2
.
.
.
}
|
( ptab
)
FROM
{
DATABASE
dbtab
( ar
)
[
TO
wa
]
[
CLIENT
cl
]
ID
id
}
其中各个参数含义如下:
1, {p1 = dobj1 p2 = dobj2 ...}与 {p1 FROM dobj1 p2 FROM dobj2 ...}的意义一样,只是写法不一样,dobj1 、dobj2…变量将会以p1 、p2…名称存储到内存或数据库中。p1 、p2…名称随便取,如果p1、p2…与将要存储的变量名相同时,只需写变量名即可,即等号与 FROM 后面可以省略。p1、p2…这些名称必须与IMPORT语句中相一致,否则读取不出
2, (ptab):为动态指定需要存储的变量,ptab内表结构要求是这样的:只需要两列,列名任意,但类型需要是字符型;第一列存储如上面的p1、p2…名称,第二列为上面的dobj1、dobj2…变量,如果变量与名称相同,则也可以像上面一样,省略第二列的值。
3, DATABASE: 将变量存储到数据库中;dbtab 为簇数据库表的名称(如系统提供的标准表INDX);ar的值为区域ID,它将数据库表的行分成若干区域 ,它必须被直接指定,且值是两位字符,被存储到簇数据库表中的RELID 字段中;id 的值会存储到簇数据表中的RELID字段的下一用户自定义字段中.
INDX表如下:
例子代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
REPORT
ztest
_ export
_ cluster
.
DATA
: lwa
_ indx
TYPE
indx
.
DATA
:
l_str_from
(
20
)
TYPE
c
,
l_str_to
(
20
)
TYPE
c
.
START-OF-SELECTION
.
l
_ str
_ from
=
'Baidusap.com'
.
lwa
_ indx
- aedat
=
sy
- datum
.
lwa
_ indx
- usera
=
sy
- uname
.
lwa
_ indx
- pgmid
=
sy
- repid
.
EXPORT
p1
=
l
_ str
_ from
TO
DATABASE
indx
( bs
)
ID
'BaiduSAP'
FROM
lwa
_ indx
.
IMPORT
p1
=
l
_ str
_ to
FROM
DATABASE
indx
( bs
)
ID
'BaiduSAP'
.
WRITE
: l
_ str
_ to
.
* DELETE FROM DATABASE indx(bs) ID 'BaiduSAP'.
运行完,可以在INDX表中看到export的数据
INDX中的数据可以通过 DELETE FROM DATABASE语句删除。