SAP ABAP程序间数据传递总结

2023-10-13 19:08:35 浏览数 (1)

SAP-ABAP程序间数据传递

场景:不同程序间,增强或者其它需要传递数据时,可能会用到上一个运行代码中的值,这时候我们参考采用内存传递的方式。(类似于全局参数,但比全局参数更加灵活)

1.ABAP Memory方式(同用户)

这种方式一般用在同一个窗口,运行某程序后,通过CALL TRANSACTION/SUBMIT或其他代码跳转到其他程序时。

代码语言:javascript复制
DATA ::matnr TYPE mara-matnr.
zmatnr = '60000001'.
"将数据上传memory:
EXPORT zmatnr TO MEMORY ID 'MERY_MATNR'.
然后在另外的程序就可以接收到这个内存ID的数据:
IMPORT matnr FROM MEMORY ID 'MERY_MATNR'.

==注意:==程序要先运行EXPORT,再运行IMPORT才能接收到值。另外,不在一个窗口时,是接收不到内存值的。

2.SAP Memory 方式(同用户)

如果值要用在外部(External Mode),那么应该使用下方的方式。

代码语言:javascript复制
"填充内存值
SET PARAMETER ID ''MERY_MATNR' FIELD zmatnr.
"接收内存值
GET PARAMETER ID ''MERY_MATNR' FIELD zmatnr.

注意:以上的两种方式都是指同一用户运行程序时的方法。

3.SHARED MEMORY或SHARED BUFFER方式(不同用户)

代码语言:javascript复制
"填充内存值
EXPORT zmatnr TO SHARED BUFFER indx(aa) ID 'MERY_MATNR'.
"接收内存值
IMPORT zmatnr FROM SHARED BUFFER indx(aa) ID 'MERY_MATNR'.

本质上,这种方式是把值存在在了服务器上,所以,如果不进行释放或删除(或者服务器重启)的话,那么这个值将一直存在,所以用完内存值后要及时清理。

4.DATABASE-数据库方式

这种方式会在表中增加一行数据,而上面的SHARED MEMORY不会。

代码语言:javascript复制
EXPORT zmatnr TO DATABASE indx(aa) ID 'MERY_MATNR'.
"indx会增加一行数据,语句中的indx,aa对应下图中的标注
IMPORT zmatnr TO DATABASE indx(aa) ID 'MERY_MATNR'.

0 人点赞