一、概述
- 内存是程序之间为了传递数据而使用的共享存储空间
- SAP内存分类
- SAP内存
- 主会话之间的数据共享
- 通过SET/GET PARAMETER语句共享不同ABAP内存领域之间的内存
- ABAP内存
- 内部会话之间的数据共享
- 只有在同一个窗口执行的程序才能共享内存
- 在每个程序里使用的内存具有ABAP内存和SAP内存
二、程序间调用
SUBMIT PROGRAM
WITH P_1 = val1
WITH s_1 in r_1
VIA SELECTION SCREEN
AND RETURN.
PARAMETERS WITH P_1 = VAL1
SELECT-OPTIONS WITH S_1 IN R_1
RADIO BUTTON WITH R_1 = 'X' WITH R_2 = ''
CHECKBOX WITH C_1 = 'X' WITH C_2 = 'X' WITH C_3 = ''
CALL TRANSACTION ‘tcode’ AND SKIP FIRST SCREEN.
三、会话
- 外部会话
- 内部会话
- 外部会话被分成了多个内部会话,这些内部会话都被放在一个堆栈里面
- 每个ABAP程序在运行时都占用一个内部会话,每个外部会话可以包含最多九个内部会话
- 在内部会话中使用CALL TRANSACTION等命令调用其他程序,则内部会话之间共享ABAP内存
四、SAP内存与ABAP内存的不同
- SAP内存
- 全局内存,用户终端会话内的所有外部会话都可以访问
- SAP内存在外部会话中的所有内部会话中可以共享
- 基本语句
- SET PARAMETER/GET PARAMETER
- ABAP内存
- 同一个会话中执行的所有程序共享的内存
- 外部会话中只存在一个ABAP内存
- 基本语句
- EXPORT obj1…objn TO MEMORY ID key.
- IMPORT obj1…objn FROM MEMORY ID key.
五、SAP内存
- SAP内存使用SAP/GPA技术传递程序间的数据
- 传递内存参数来给其他程序输入字段赋值的操作成为“SPA/GPA技术”
- SAP/GPA参数指的是利用SAP内存的参数,表TPARA中进行确认
- 只限相同的用户共享内存,又叫User Specific参数
- SPA/GPA参数信息可以创建SAP内存参数
- SE80->Workbench->Edit Object
- SM30->TRARA表,维护条目
SET PARAMETER ID '内存名称' FIELD GV_INDEX.
GET PARAMETER ID '内存名称' FIELD GV_INDEX.
PARAMTERS:P_PARAM TYPE N MENORY ID '内存名称'
六、ABAP内存
- 使用ABAP内存时可以在程序级别上任意指定内存ID名,不需要参数ID
- 利用ABAP内存使用语句
- EXPORT…TO…向MEMORY ID传出数据
- IMPORT…FROM…从MEMORY ID传入数据
- FREE MEMORY ID,删除ABAP内存
- 使用CALL TRANSACTION/SUBMIT/CALL DIALOG等命令调用其他程序时,会生成内部会话并共享ABAP内存中的数据
- 使用共享缓冲器
- 所有主会话和内部会话中都可以共享数据,还可以与其他用户共享
- EXPORT/IMPORT TO/FROM SHARED BUFFER…