访问 RFC 调用系统的堆栈内存

2023-12-26

当程序在 SAP ECC 中运行时,“系统堆栈”存储所有全局变量,无论在该单个会话中调用什么模块/程序。

当它调用支持 RFC 的功能模块 (FM) 时,会在被调用系统中创建一个新的系统堆栈,并且当被调用 FM 完成时,只能在 ECC 中检索被调用 FM 中定义的导出参数。

有没有办法在ABAP中访问另一个系统堆栈的全局变量?

例如,就我而言:

  • The FM BAPI_MATERIAL_AVAILABILITY在 ECC 系统中通过 RFC 调用 FMBAPI_APOATP_CHECK在 APO 系统中。
  • 当 APO FM 完成时,除了 APO RFC 功能模块中定义的参数之外,我想访问 APO 系统堆栈的一些全局变量。我需要访问 ECC 系统中的 GTC 对象引用。

PS:通常我们使用下面的ABAP语句来访问同一堆栈中的内存,但是当内存位于另一个系统中时它不起作用:

ASSIGN '(PrgmName)Globalvariable' TO FIELD-SYMBOLS(<lo_data>).

由于 RFC 连接在调用后不会自动关闭,因此在调用之后,用户会话的内存将被保留,因此您可以调用在 APO 系统中创建的自定义启用 RFC 的功能模块,该模块访问您的内存。希望并返回其值。请注意,对象引用不能通过 RFC 传递。

为了让您更好地理解,我改编了关于内存区域的官方数据 https://help.sap.com/doc/abapdocu_753_index_htm/7.53/en-US/index.htm?file=abenmemory_organization.htm显示当 2 个 ABAP 系统之间的连接未关闭时 RFC 调用如何重用内存:

图例(箭头“1”和“2”):

  1. 在第一次 RFC 调用时,会打开一个连接,创建一个新的用户会话、ABAP 会话和内部会话。全局变量存储在内部会话内名为“(数据)对象”的块中。调用结束时,连接将被保留,包括第一个内部会话及其全局变量。
  2. 在使用相同连接的下一个 RFC 调用中(现有连接被重用),用户会话被重用(连同其 ABAP 和内部会话)来执行功能模块,因此它可以访问先前调用的全局变量。 )。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

访问 RFC 调用系统的堆栈内存 的相关文章

  • SAP ABAP 中的异步调用

    举例场景 创建采购申请的接口中 在执行完BAPI之后返回了一个PR 接着就会执行到commit提交的接口 然如果还需要在创建的时候直接审批 那么就需要再调用PR审批的BAPI 但是你会发现有的PR 在ME23N查看的时候是审批状态 而有的并
  • ABAP--新语法--Open SQL--第四天-- From Table

    From Table Internal Table 在 ABAP 7 52 后 支持将内表作为数据源使用 内表作为数据源使用时 需要定义别名并使用转义符 该用法可以用来代替 FOR ALL ENTRIES IN 但FROM 语句中最多使用一
  • 调用 RFC_READ_TABLE 时出现 DATA_BUFFER_EXCEEDED 错误?

    我的 java groovy 程序从用户输入接收表名和表字段 它查询 SAP 中的表并返回其内容 用户输入可能涉及表CDPOS and CDHDR 在阅读 SAP 文档和谷歌搜索后 我发现这些是存储更改文档日志的表 但我没有找到任何可以在j
  • 如何让abap程序暂停?

    出于测试目的 我需要我的 ABAP 程序等待几秒钟 如何才能做到这一点 2个解决方案 1 要么使用等待 秒 WAIT UP TO 42 SECONDS WAIT UP TO 0 5 SECONDS decimals are possible
  • 如何添加整个包来通过代码传输请求?

    我的任务是以编程方式完成所有这些步骤 创建一个新的传输请求 我设法做到了TR INSERT REQUEST WITH TASKS 将包内容添加到新创建的传输中 这是我陷入困境的部分 释放传输 我设法做到了这一点TR RELEASE REQU
  • RFC_READ_TABLE 传递“选项”和“字段”参数 (c#)

    需要帮助 我正在尝试使用 RFC READ TABLE 从 SAP 获取销售数据 但不知道如何将 OPTIONS 和 FIELDS 参数传递给 SAP 这是我的应用程序的示例代码 连接正常 执行后出现异常 DATA BUFFER EXCEE
  • CNS0项目创建交货单增加销售办事处

    1 业务需求 1 1 销售办事处介绍 销售办事处是指在企业中负责销售活动的区域性单位或部门 在SD模块中 可以表示企业的不同销售地点 销售办公室 分销中心或分公司 销售办事处扮演着多种角色和职责 例如 销售活动管理 销售办事处负责管理和监控
  • 确定 ABAP 中的活动格式设置

    As the 格式化设置的ABAP文档解释 格式设置设置如下 在内部会议开始时 他们是由相关默认设置决定当前用户的用户主记录中的固定值 使用语句 SET COUNTRY 这是当前内部会话的默认设置可以使用特定于国家 地区的格式进行覆盖 但作
  • SAP搜索帮助的限制值范围样式

    样式一 点击下拉框 输入筛选数据 筛选搜索帮助列表 样式二 点击漏斗 输入筛选数据 筛选搜索帮助列表 参数设置 不同的样式 通过账号的参数设置决定 第一种样式 没有配置F4METHOD 或者配置了参数值为ActiveX 第二种样式 配置了F
  • 除了使用 CONCATENATE 关键字之外,还有其他连接方法吗?

    有没有另一种方法可以在ABAP中连接而不是使用CONCATENATE keyword http help sap com abapdocu 731 en abapconcatenate shortref htm 一个使用的例子CONCATE
  • 在ABAP中使用自定义消息引发异常

    我正在编写一个通过 RFC 调用的函数 我想找到最简单的方法来在 ABAP 中使用自定义消息引发异常 如果这可以尽可能短地完成 并且可以在一行上完成 那就太好了 我希望它用于调试 而不是用于运行生产代码 背景 过去我使用Python编程语言
  • ALV 报告填补了文档之间的空白

    我试图挑战自己制作一份按公司代码显示所有数据的 ALV 报告 但有些文件编号有差距 我想填补缺失号码之间的空白 例如 最后索引值 20012 那么下一个值是 20014 如果报表使用内表中存在的所有数据 如何在网格中插入 20013 Tha
  • 如何使用REUSE_ALV_FIELDCATALOG_MERGE功能模块?

    我正在尝试使用功能模块REUSE ALV FIELDCATALOG MERGE传递 ddic 中的字段标签以显示在 alv 报告的列标题中 但是 那没有用 如果我评论I STRUCTURE NAME TY YNAH CUS OBJ REQ
  • ABAP中的求值顺序

    ABAP 是否有明确的评估顺序 例如 在表达式中foo bar 是否可以保证哪种方法foo and bar 首先评估 执行 在 ABAP 关键字文档中找不到此类信息 ABAP 文档 arith exp 算术运算符 https help sa
  • 更新标准表中的字段 LIPS-LFIMG 时出现问题

    所有的流程看起来都不错 但是当通过调用函数时 更新也失败 需要更新的字段没有更新 不知道问题出在哪里 有人可以帮我解决这个问题吗 我错过了什么步骤吗 错误消息登录 LT PROT DATA LT PROT LIKE PROTT OCCURS
  • 方法调用作为另一个方法调用的参数?

    我是abap OO 的新手 但之前用java开发过 并编写了一个abap cl caretaker 类 它应该处理数据库表及其本地副本 实习生表 上的操作 我想进行以下方法调用 caretaker gt show table caretak
  • ABAP中调用方法的不同方式

    抱歉这个基本的 ABAP 问题 ABAP中调用方法有哪些不同的方式 他们的 官方 名字是什么 我听说过执行 方法调用和内部 内联方法调用 执行使用PERFORM关键字和方法调用CALL METHOD语法 我猜 但什么是 内部 或 内联方法调
  • SAP .NET 连接器 (SAPNCO) 和 .Net Core

    SAP NET Connector 与 NET Core 框架不兼容 使用 NET Core 时是否有其他方法从 SAP 检索数据 我已经在 nuget 包管理器中搜索了替代方案 但没有找到 我可以使用任何解决方法吗 我非常希望受益于 NE
  • 如何使用 WHERE 条件中的关联值从 ABAP SQL 消费 CDS?

    我有一个通知标头的 CDS 视图及其状态关联 define view ZNOTIF as select from qmel as notif association 0 to ZNOTIF STATUS as status on statu
  • 在ABAP中显示消息语句内的变量

    如何在不使用消息类的情况下显示消息语句中的变量 IF acct bal lt min bal MESSAGE customer balance less than minimum Balance gt acct bal TYPE E END

随机推荐

  • jQuery AJAX 类型:'GET',传值问题

    我有一个类型为 GET 的 jQuery AJAX 调用 如下所示 ajax type GET url createUser data userId 12345 userName test success function data ale
  • 聚集索引和非聚集索引实际上意味着什么?

    我对 DB 的接触有限 并且仅作为应用程序员使用过 DB 我想了解Clustered and Non clustered indexes 我用谷歌搜索 发现的是 聚集索引是一种特殊类型的索引 它重新排序的方式 表中的记录是物理上的 存储 因
  • 为 ARM 交叉编译 ocaml 应用程序

    我正在交叉编译一个触摸屏驱动程序 它附带一个 ocaml 校准应用程序 我正在尝试编译 ARM 的驱动程序和应用程序 特别是运行 Angstr m 的 Beagleboard 事情是这样的 raziel Bebop zytouch driv
  • 将 jQuery 代码添加到 ASP.NET Boilerplate

    我有一个使用 ASP NET Boilerplate 的项目 我想通过使用 jQuery 添加更多功能 我尝试在页面末尾 例如Home cshtml 写一段简单的代码 如下 看起来完全没有效果 然后我尝试将此代码放入 Home js 文件中
  • SQL 获取 Netezza DB 中的唯一行

    我有一个表 其中的行如下 id group name code 1 999 2 16 3 789 4 999 5 231 6 999 7 349 8 16 9 819 10 999 11 654 但我想要这样的输出行 id group na
  • 如何根据键从对象文字返回值?

    我有一个数组如下 如何检索特定键的值并将该值放入变量中 var obj one 1 two 3 three 5 four 1 five 6 例如 如果我想获取 三 的值 我该如何在 javascript 或 jQuery 中实现呢 您可以通
  • 在 ubuntu 18.04.4LTS 上重新安装 gitlab 后,gitlab-reconfigure 在 redis 上被阻止

    这是我第三次在服务器上安装 gitlab 之前从未遇到过问题 在处理 12 9 0 上的问题后 我决定重新安装 gitlab ce 12 10 0 在安装新版本之前 我已确保删除所有 gitlab 文件并重新启动服务器 步骤1 卸载gitl
  • numpy 中数据类型的奇怪隐式转换

    我创建了一个简单的 numpy 数据类型 uint 如下所示 import numpy as np a np array 1 2 3 dtype np uint 当我计算时 a 0 1 我期望结果为 2 但它给出了 2 0 为什么 np u
  • 如何从通用方法访问类的属性 - C#

    我有一个具有以下属性的三类 Class A public int CustID get set public string Name get set Class B public int CustID get set public stri
  • 强制分配返回的对象[重复]

    这个问题在这里已经有答案了 在 C 中 有没有办法强制对函数的返回值进行赋值 即如果我有一个成员函数 foo class myClass public T1 foo T2 x T1 y something return y 我可以在 mai
  • Android POSIX 兼容吗?

    Android POSIX 兼容吗 我知道它使用 Linux 内核 但我不确定这是否意味着它兼容 POSIX 因为 POSIX 标准更多地处理用户层函数 那么 兼容吗 例如 如果我在 C 程序中仅使用 ANSI 和 POSIX 函数 它是否
  • 如何在 Objective-C 中取消安排 NSTimer

    我在应用程序中使用嵌套 NSTimer 我这里有两个问题 如何在此函数中重新启动计时器 void updateLeftTime NSTimer theTimer 如何杀死之前的计时器 因为 void updateLevel NSTimer
  • faunadb中如何进行多条件查询?

    我尝试提高对 FaunaDB 的理解 我有一个包含以下记录的集合 ref Ref Collection regions 261442015390073344 ts 1587576285055000 data name italy attri
  • Python:从文件夹中读取多个json文件

    我想知道如何阅读几本json来自单个文件夹的文件 不指定文件名 只是它们是 json 文件 此外 还可以将它们变成pandas数据框 你能给我一个基本的例子吗 一种选择是列出目录中的所有文件操作系统列表目录 https docs pytho
  • .dockerignore 无法包含具有 !**/*.extension 模式的子目录中的文件

    我遇到了问题 dockerignore文件 这是我的项目结构 file sh file js file go file py subdir file2 go file2 py dockerignore Dockerfile 根据 docke
  • c# 将DataGridView保存到Xml文件

    这是我保存文件的按钮 private void metroButton12 Click object sender EventArgs e save DataSet ds DataSet dataGridView1 DataSource S
  • 使用 resharper 从大型类创建接口

    我有一个非常大的类 有很多方法 是否可以使用 Resharper 从该类构建接口 Yes 我的快捷键是 Ctrl Shift R 来调出重构选项 对类名执行此操作允许您 提取接口 或者 您可以从菜单 gt ReSharper gt Refa
  • 在哪里放置对象映射(在 RestKIt 中)

    因为我不想劫持另一个线程 所以我提出了关于映射的问题 首先阅读 RestKit 中放置对象映射的最佳位置是哪里 https stackoverflow com questions 7190721 wheres the best place
  • 如何在启用 Markdown 的 Slack 附件行的开头显示大于号?

    我正在尝试匹配 Slack API 消息的模型 该消息在附件文本行开头的链接中具有大于 gt 字符 该模型还在附件文本中使用斜体和粗体 所以我有text in the mrkdown in大批 不幸的是 这会导致 Slack 解释为 gt
  • 访问 RFC 调用系统的堆栈内存

    当程序在 SAP ECC 中运行时 系统堆栈 存储所有全局变量 无论在该单个会话中调用什么模块 程序 当它调用支持 RFC 的功能模块 FM 时 会在被调用系统中创建一个新的系统堆栈 并且当被调用 FM 完成时 只能在 ECC 中检索被调用