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'.
平时用到比较多的还是前面3种方式,大家酌情选用,哈哈!
以上。
欢迎关注公众号,每日更新: