SAP ABAP程序间数据传递总结

本文介绍了SAPABAP中不同场景下的数据传递方法,包括同用户窗口内的ABAPMemory、外部模式的SAPMemory、跨用户共享内存(SHAREDMEMORY/SHAREDBUFFER)以及数据库存储(DATABASE),强调了内存管理的重要性。

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

SAP-ABAP程序间数据传递

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

1.ABAP Memory方式(同用户)

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

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),那么应该使用下方的方式。

"填充内存值
SET PARAMETER ID ''MERY_MATNR' FIELD zmatnr.
"接收内存值
GET PARAMETER ID ''MERY_MATNR' FIELD zmatnr.

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

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

"填充内存值
EXPORT zmatnr TO SHARED BUFFER indx(aa) ID 'MERY_MATNR'.
"接收内存值
IMPORT zmatnr FROM SHARED BUFFER indx(aa) ID 'MERY_MATNR'.

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

4.DATABASE-数据库方式

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值