【SAP内存管理和程序间调用】

内存管理

内存是程序之间为了传递数据而使用的共享存储空间

SAP内存分类

  • SAP内存
    主会话之间的数据共享
    通过SET/GET PARAMETER语句共享不同ABAP内存领域之间的内存

  • ABAP内存
    内部会话之间的数据共享
    只有在同一个窗口执行的程序才能共享内存

在每个程序里使用的内存有ABAP内存和SAP内存

在这里插入图片描述

外部会话(External Session)

一般来讲,一个外部会话是一个R/3系统的窗口。
当用户成功登录SAP系统时,就开始了一个和应用服务器之间的外部会话,可以通过如下几种方式同时打开多个外部会话:

  • 通过点SAP GUI系统工具条上的按钮
  • 选择系统主菜单“System Create Session”
  • 在Command Field中输入/O<TCODE>回车,如输入“/OSE11”,将在新开辟的一个外部会话窗体中执行TCODE: SE11

SAP缓冲器

  • 可以利用SAP内存在Work Process之间共享内存
  • SAP应用程序系统各自拥有自己的缓冲器(Client Cashe)
  • 缓冲器在Client级别上互相共享,因此SAP缓冲器在所有主会话中共享数据

内部会话(Internal Session)

  • 外部会话被分成了多个内部会话,这些内部会话被放在一个堆栈(STACK,一个后进先出的线形结构)里面
  • 每个ABAP程序在运行时都占用一个内部会话,每个外部会话可以包含最多九个内部会话。
  • 在内部会话中使用CALL TRANSACTION等命令调用其他程序,则内部会话之间共享ABAP内存

SAP 内存

SAP内存使用SPA/GPA技术传递程序间数据

  • 传递内存参数来给其他程序输入字段赋值的操作成为“SPA/GPA技术”
  • SAP/GPA参数指的是利用SAP内存的参数,表TPARA中进行确认
  • 只限相同的用户共享内存,又叫User Specific参数

SPA/GPA参数信息可以在创建SAP内存参数

  • SE80->Workbench->Edit Object
  • SM30->TPARA表,维护条目

在TYPE1报表程序的选择画面上的参数或者select-option变量,使用的是MEMORY ID来连接字段与参数;
在ONLINE界面中,在PARAMETER ID字段设置内存ID,及SET/GET设置
使用HIDE语句,将字段值保存到HIDE内存领域;
Debug界面查询Goto->System Areas->SAP Memory

ABAP 内存

使用ABAP内存时可以在程序级别上任意指定内存ID名,不需要参数ID
利用ABAP内存使用语句

EXPORT … TO … "向MEMORY ID传出数据
IMPORT … FROM … "从MEMORY ID传入数据
FREE MEMORY ID "删除ABAP内存

使用CALL TRANSACTION/SUBMIT/CALL DIALOG等命令调用其他程序时,会生成内部会话并共享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.

程序间调用

接口:使用SUBMIT语句调用type1程序,调用选择界面

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.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值