前言
一个程序是怎么跑起来了,中间经历了什么,我们先从session开始学习。
一、abap_session是什么?
session分为外部session和内部session,
是SAP创建的一个实例 外部session可以理解为打开了一个SAP_GUI窗口默认可以打开6个(当然这是由 Basis 设置的)。例如:当你输入一个T-CODE(se38)这个时候就打开了一个external,在se38中新建一个report程序这个时候就打开了一个 internal对话 一个外部session可以有多个内部session,
二、程序之间传值用到与session的关系
1.abap内存传值
abap内存传值是针对一个internalSession对话而言的。
DATA:lw_data TYPE NUM5.
lw_data = 12345.
"将数据上传memory:
EXPORT lw_data TO MEMORY ID 'M_DATA'.
然后在另外的程序就可以接收到这个内存ID的数据:
IMPORT matnr FROM MEMORY ID 'M_DATA'.
2.sap内存传值
sap内存传值是针对externalSession而言的
DATA:lw_srt(5) TYPE c.
"SAP内存 SET PAREMETER
lw_srt = 'test'.
SET PARAMETER ID 'PARAMETER' FIELD lw_srt.
----------------------------------------------------------
DATA:lw_srt(5) TYPE c.
"SAP内存 GET PAREMETER
GET PARAMETER ID 'PARAMETER' FIELD lw_srt.
总结
session的生命周期:
internalSession:创建程序时生产新的会话(每个externalSession最多可以包含九个interSession)程序执行结束的时候,这个internalSession在栈顶被删除掉,执行下一个栈顶的internalSession处理
externalSession :打开一个gui窗口的时候创建externalSession,关闭一个窗口则删除一个exterSession。
讨论
当你一个窗口debug中,然后再打开一个窗口去跑另外一个程序。
这个时候的内存变化是什么样的呢。欢迎留言讨论。