`
evangxli
  • 浏览: 223688 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

ABAP 写入内存:ABAP memory中的Export和Import

阅读更多

转:cnblogs(没有具体地址,抱歉哈!)

 
上图是SAP 运行时内存,SAP程序运行期间的内存管理与用户会话相关,运行时内存包括SAP内存以及ABAP内存两大部分。 首先说一下以下的概念:
1. 主会话(main session): 用户登录SAP系统,便开始了与应用服务器之间的主会话,又称外部会话(External session)。最多打开6个主会话。注: 这里的Session和Mode应该是一个意思,有错误请更正哈。 

2. internal session: 主会话中运行可执行程序或者模块池程序,就开始一个内部会话。其中的程序内存区域是主会话abap内存中分配的一部分。在一个主会话中,只有当前程序的内部会话内存区是活动的,如果当前程序是被其他的程序所调用,内存呈堆栈状,当前程序不能使用其他非活动程序中的数据。

 

3. ABAP memory: 每个主会话内部都有一个ABAP内存区域,可以通过export to memory 和import from memory语句在该内存的程序堆栈之间进行数据传递。如果一个程序内部调用另一个程序,可以先使用export将数据存入内存,在调用程序中通过import语句读取该程序,退出被调用程序前也可以使用个同样方式将数据传回主程序。

 

4. SAP memory: SAP内存是所有的会话都可以访问的内存区域,因此数据可以通过SAP内存在各个会话之间共享。在ABAP程序中,SET PARAMETER 和 GET PARAMETER语句用于访问SAP内存中所存储的SPA/GPA参数。该参数与屏幕元素相连接,因而可以通过SAP内存进行屏幕的默认参数设定。

 

其他细节:
调用序列: 如果一个程序在运行期间调用其他程序,则可能出现调用那个并中止当前程序或调用并返回两种情况。中止当前程序即新程序的内部绘会话完全替代调用程序,并将原有程序的内存删除;调用并返回则生成一个调用序列,并生成一个内存堆栈,并在调用的程序结束后,将恢复上一级调用程序的内存状态。这样在调用和被调用程序间进行数据传递,需要使用同一个主会话中公用的ABAP内存。


程序装载: 每次开始运行或者调用一个abap程序时,系统将一个程序实例装载入ABAP内存。在内部会话中第一个被装载的程序称为主程序。被调用的程序或者全局类,该程序或类的一个实例将被装载至ABAP内存并且相关的数据和对象将保持至主程序结束。每次一个(l,m,f,s类型的)程序实例被装载时,都触发LOAD-OF-PROGRAM事件(类库除外),因此该事件对于每一个程序在内部会话中仅装载一次,可以用于整个程序的初始化。

 

关于对象的创建: 当create object语句创建abap对象时,一个类的实例将被装载至内部会话,所有内部会话中的程序和对象都可以使用该实例。从而该对象的指针可以被传递进入外部过程(例如子程序,功能模块和类方法)。应用服务器中没有分配可以被多个事务共享的对象内存区域,对象引用变量不能存储在ABAP内存或者SAP内存中。可以用数据库存储(数据库提供persistence service)解决这个问题。

 

例:内存程序堆栈之间进行数据传递EXPORT TO MEMORY 和IMPORT FROM MEMORY

EXPORT TO MEMORY

 
IMPORT FROM MEMORY

 

 

 

  • 大小: 38.6 KB
  • 大小: 73.7 KB
  • 大小: 74.3 KB
分享到:
评论

相关推荐

    ABAP基础:行和内表

    ABAP基础:行和内表ABAP基础:行和内表ABAP基础:行和内表ABAP基础:行和内表

    ABAP-Swagger:使用Swaggeropenapi规范公开ABAP REST服务

    使用公共方法在ABAP中开发课程2:实现接口ZIF_SWAG_HANDLER,并注册公共方法(示例 ) 3:现在可以通过rest访问这些方法() 4:可以通过REST服务的基本目录中的swagger.html访问安装和要求通过安装需要本地JSON支持...

    [SAP ABAP开发技术总结]ABAP Enhancement:第一部分

    [SAP ABAP开发技术总结]ABAP Enhancement:第一部分 介绍了SAP ABAP用到的各种增强,图文并茂,讲解详细,是学习ABAP开发非常好的资料 第一代:基于源码增强(子过程subroutine:Form) 通过SPRO->IMG查找用户出口 ...

    [SAP ABAP开发技术总结]ABAP Enhancement:第二部分

    [SAP ABAP开发技术总结]ABAP Enhancement:第二部分 介绍了SAP ABAP用到的各种增强,图文并茂,讲解详细,是学习ABAP开发非常好的资料 第一代:基于源码增强(子过程subroutine:Form) 通过SPRO->IMG查找用户出口 ...

    ABAP-Library:有用的ABAP代码段

    ABAP库 该存储库代表我的个人可重用ABAP代码库。 随意使用或贡献! 为了组织起见,文件位于干净的子文件夹中。 这里的许多类还表示示例实现。 这些文件都不包含任何公司特定的功能逻辑-因此没有“机密”被泄露。 ...

    ABAP-exercises:在SAP ABAP开发环境中进行编程

    ABAP-exercises:在SAP ABAP开发环境中进行编程

    ABAP可重用:ABAP可重用代码

    ABAP可重用:ABAP可重用代码

    ABAP中文幫助文檔

    关于ABAP/4编辑器和调试过程的详细信息,参见文档ABAP/4工作台工具。 本节讲述下列主题: 1) 命名程序 2) 指定程序属性 3) 编写程序 4) 测试程序 5) 显示或更改程序 6) 将事务代码分配给程序 1)、命名程序 要创建...

    abap-puzzles:ABAP中的编程难题和解决方案

    我的目的是演示使用ABAP语言的许多方面来解决ABAP中这些难题和挑战的不同方法,同时给出一些有关如何解决ABAP中实际问题的想法。 :) 希望我能够阐明ABAP方法的一些异同,甚至ABAP语言的奇异之处。 本页包含对不同...

    ABAP-Logger:ABAP记录与任何其他语言一样轻松

    ABAP记录器 SAP Logging与其他任何语言一样轻松。 ABAP版本:702或更高 见 特征 在记录消息 显示讯息 安装 通过安装此项目。 :warning: 需要迁移 :warning: 在2021年2月28日,文件夹逻辑被更改,而abapGit可能...

    ABAP 调用ABAP PROXY

    ABAP 调用ABAP PROXY

    abap4vim:在 Vim 中编辑您的 ABAP 代码

    使用此插件,您可以从 SAP 服务器下载 ABAP 代码,在 Vim 中编辑 ABAP 代码,然后再次将其上传到 SAP 服务器。 这对于编辑 ABAP 报告(无模块池)或简单的 ABAP 程序很有帮助。 要求 操作系统 此插件仅在 Windows 7...

    abap2xlsx:从ABAP生成专业的Excel电子表格

    abap2xlsx-使用ABAP读取并生成Excel电子表格有关一般信息,请参阅博客系列和。 请参阅官方Wiki以获取。讨论板我们使用作为讨论板。 您可以在发布新问题之前。 您还可以来限制搜索。 当您要时,请使用此链接,标签...

    ABAP开发教程及代码(含SAP各模块实例代码)

    SAP+ ABAP开发实用教程:顾问培训资料,含实例代码和教程,详细描述ABAP开发过程:数据表读法、程序规范、代码实例、调试方法以及ABAP开发环境和总体介绍、 ABAP语法示例 、ALV控件的使用、 实战Form设计 ,分基础、...

    现代ABAP编程:掌握最新的ABAP语言_CD266_CN

    现代ABAP编程:掌握最新的ABAP语言_CD266_CN

    SAP ABAP – Tables讲解

    SAP ABAP – Tables(表格) • 如何從畫面找資料所在的Table • 分辨表格及結構的不同 • 定義一個表格(SE11) • 定義一個結構(SE11) • 查看資料(SE16, SE17) • 建立維護畫面

    abap 上传文件到ftp

    abap 上传文件到ftp 比较使用的实例,大家可以学习。

    sapabap开发从入门到精通

    详细介绍了SAPABAP开发者必须掌握的包与变更传输系统(CTS)、数据类型、数据库、模块化程序、内表、调试、ABAP数据字典、锁对象、检索帮助、FieldSymbol与数据引用、SAP内存与ABAP内存、报表程序、模块池程序、ABAP...

    ABAP中文帮助文档

    第一部分: ABAP/4 基础 ABAP/4 基础 第二部分: 编写 ABAP/4 报表 编写 ABAP/4 报表 第三部分: 编写 ABAP/4 事务 编写 ABAP/4 事务

    ABAP_Evildoers:SAP ABAP安全测试程序

    在ABAP系统中,像在基于CGI的服务器之类的其他Web系统中,这两者都是不可能的,因为进程崩溃除了在日志数据库中创建一个条目(转储ST22)并通过返回菜单开始而退出程序外,什么也没有做观点。 在经典的攻击场景中...

Global site tag (gtag.js) - Google Analytics