SAP内存管理

2021-11-09 17:42:04 浏览数 (1)

一、概述

  • 内存是程序之间为了传递数据而使用的共享存储空间
  • SAP内存分类
    • SAP内存
      • 主会话之间的数据共享
      • 通过SET/GET PARAMETER语句共享不同ABAP内存领域之间的内存
    • ABAP内存
      • 内部会话之间的数据共享
      • 只有在同一个窗口执行的程序才能共享内存
  • 在每个程序里使用的内存具有ABAP内存和SAP内存

二、程序间调用

  • 使用SUBMIT语句调用程序,调用选择界面
代码语言:javascript复制
SUBMIT PROGRAM
	WITH P_1 = val1
	WITH s_1 in r_1
	VIA SELECTION SCREEN
	AND RETURN.
  • 不同参数的传值方法
代码语言:javascript复制
	 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 = ''
  • 调用事物代码
代码语言:javascript复制
CALL TRANSACTION ‘tcode’ AND SKIP FIRST SCREEN.

三、会话

  • 外部会话
    • 一般来讲,一个GUI窗口就是一个外部会话
  • 内部会话
    • 外部会话被分成了多个内部会话,这些内部会话都被放在一个堆栈里面
    • 每个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表,维护条目
代码语言:javascript复制
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…

0 人点赞