一、概述
内存是程序之间为了传递数据而使用的共享存储空间 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…