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'.

————————————————
版权声明:本文为CSDN博主「SAPmatinal」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/SAPmatinal/article/details/132154613

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐