聊聊SAP内存和ABAP内存

1

区别与联系

319f4b1497c1c557f905fc6fa123ece9.png

SAP内存(SAP Memory)和ABAP内存(ABAP Memory),两者都可用于编程中的数据传递,将数据通过ID进行绑定,之后在其他程序中通过ID获取。

1.1

语法区别

SAP内存通过SET/GET PARAMETER,来抛接内存值,如:

SET PARAMETER ID 'MAT' FIELD p_matnr. 
GET PARAMETER ID 'MAT' FIELD p_matnr.

ABAP内存通过EXPORT/IMPORT,来抛接内存值,如:

EXPORT p_matnr TO MEMORY ID 'MAT'.
IMPORT p_matnr FROM MEMORY ID 'MAT'.
FREE MEMORY ID 'MAT'.

1.2

作用范围区别

在介绍作用范围区别之前,先引入三个概念,User Session、External Session 和 Internal Session。

当用户登录SAP就生成了User Session。

打开一个窗口界面,就产生了一个External Session,窗口关闭,则External Session释放。

SAP NW 7.0之前的版本,一次最多打开6个窗口,也就是6个External Session。之后的版本最多打开16个窗口。

cc6bd66f5ba4a0d853fac74fcbb95bba.png

在一个窗口内,通过CALL TRANSACTION,SUBMIT等方式调用程序,则会自动打开Internal Session,此处会根据调用打开多个Internal Session。当窗口关闭时,则释放该External Session下的所有Internal Session。

用户退出登录,则关闭所有External Session和Internal Session。

理解了这三个概念,现在回到主题,上文的ABAP内存是在Internal Session之间进行数据传递,而SAP内存是在External Session之间进行数据传递,当然也可以传数据到Internal Session中。

通俗的讲,ABAP内存是在同一个窗口内运行的程序之间,进行数据传递。而SAP内存,可以在多个窗口之间进行数据传递。如下图所示

582bee80c799e68f309b59a43e93d789.png

2

代码举例

02e443ef8a4b44e3a08ebbde1e8f41d8.png

2.1

ABAP内存

在主程序抛数据

0a09d12527e9b0f613e569906ee344b1.png

在被调程序中接收数据

081a55ccdbfcaa74c70e3b63b7720af2.png

而如果在另外一个窗口中运行YTEST007是不会收到数据的

7ca8f51d9b90efa541b43629e72dab6b.png

2.2

SAP内存

在主程序Y001中抛SAP内存

ac2f2729329e06434ed170f18f634f70.png

 在另一个窗口调用Y002接内存

152ef9f2d975e837b15e1383ebdc1dd2.png

2.3

标准SAP内存ID

在SAP中,定义了很多SAP内存ID,存放在TPARA表中,通常也与数据元素绑定

c32f241dfb2dd5b978bee2b98c30f04c.png

如此,可以通过SAP抛内存的方式,为初始屏幕中的字段填值

"--------------------@斌将军--------------------
DATA:lv_matnr TYPE mara-matnr.


lv_matnr = '2000000585'.


SET PARAMETER ID 'MAT' FIELD lv_matnr.


CALL TRANSACTION 'MM03'." AND SKIP FIRST SCREEN.
"--------------------@斌将军--------------------

自动填上物料

7c068a3afe15767916a0e26ae97e5491.png

搭配AND SKIP FIRST SCREEN,就自动打开对应的物料视图。

是不是很熟悉?没错,这就是我们平时在报表中常用的穿透。

对于SAP内存传值的应用还很多。再比如,当批导上传EXCEL时,为了能记录上次导入的文件地址,避免重复选择文件,通常在文件后边加上MEMORY ID

此应用也是使用了SAP内存传值

de2964574d74b4f1742a42fd4c45c289.png

上传文件地址

b7d5083f54eeb46d7c4316c8d8cf7101.png

 如果此时用接内存的方式,运行程序就能得到批导程序上传的文件路径

e16e1d517b2357cfec2e211ae4de2608.png

当然此时运行其他批导程序,而且MEMORY ID相同,则其他程序也会自动带出上一个批导程序的文件路径

22f1de4a140d61d7ab6456710fdbdd55.png

所以内存传值也可以用在一些个性化细节的需求开发上。以上就是关于SAP内存和ABAP内存的介绍。

—— 希望本篇文章对您有所帮助 ——

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值