- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我处于堆栈的第 11 级时,我想从第 5 级访问一个变量。
两个级别属于不同的程序:
lvl type event program include
11 METHOD SET_PERNRS_TAB <my_program> <my_include>.
...
05 FORM PUT_PERNR <ldb_program> <ldb_include>.
04 FORM %_ROOT <ldb_program> <ldb_include>.
...
这就是我目前的做法:
constants lc_ldb_pernr_tab type string value `(LDB_PROGRAM)INDEX[]`.
field-symbols <lt_pernr_tab> type any table.
assign (lc_ldb_pernr_tab) to <lt_pernr_tab>.
现在我可以使用 <lt_pernr_tab>
,它是变量 index[]
的“副本”来自 LDB,在另一个程序中。
这里的问题是它只适用于某些变量,但不适用于其他变量...请在 ldb 程序内的两个变量的声明下方找到。
我试图从我的程序中获得它们的值(value),但只有一个有效。
index
:DATA: BEGIN OF COMMON PART $pnp-index$.
DATA: BEGIN OF index OCCURS 1000,
pernr LIKE pernr-pernr,
END OF index.
DATA: END OF COMMON PART.
index_all
: DATA: index_all TYPE t_t_pernr.
这意味着(program)variable
的这个进程仅适用于由 ldb 声明为“common part
”的变量?
也就是说,无法获取index_all
的内容当我在我的程序中时来自 LDB 程序,因为它不是“common part
”?
-> 提供一点上下文,index_all
有我需要的所有条目,而 index
只是 index_all
的一个分区. ldb 遍历 index
完成后,它会使用 index_all
的下一个索引对其进行更新.
最佳答案
我认为 documentation说明一切:
For internal use only, the name in name can also have the form "(PROG)DOBJ", where "PROG" is the name of an ABAP program and "DOBJ" the name of a global data object of this program (these names are not case-sensitive). If the program "PROG" is loaded into the same internal session as the current program when the statement ASSIGN is executed, the data object "DOBJ" is found in this program and the field symbol points to this data object if the assignment was successful.
注意“仅供内部使用”,即这种特殊形式的 ASSIGN 可能会在任何 future 的 ABAP 版本中被删除(但我怀疑)。
因此,您可能想要访问一个不是全局的变量,即本地、实例属性或私有(private)/ protected 静态属性...
ASSIGN ('PROG(DOBJ)')
与 common part
一起使用因为它具有全局范围。请注意,通过声明“公共(public)部分”的相同名称,属于同一“组”(1)的其他程序也可以在没有 ASSIGN 的情况下使用公共(public)部分。
如果您可以调整程序(因为它是自定义的),最好稍微重构一下,以便可以从外部访问数据,而不是使用以下技巧。
如果您无法调整程序(因为它是标准的),有以下解决方法来访问本地数据对象。
假设这个程序是“PROG”,它包含过程“X”,其中包含您要读取的本地数据对象“LOCVAR”。您可以使用 Enhancement Framework要做到这一点。因此,要使其可从外部程序访问:
DATA ZZ_REF_LOCVAR TYPE REF TO DATA
(建议:前缀为“ZZ”以限制与程序 future 补丁的冲突)ASSIGN ('LOCVAR') TO FIELD-SYMBOL(<zz_locvar>). zz_ref = ref #( <zz_locvar> ).
初始化ZZ_REF_LOCVAR (3)CL_ABAP_GET_CALL_STACK
进行检查,您现在可以使用以下代码访问指向局部变量的全局数据引用:FIELD-SYMBOLS <ref_locvar> TYPE REF TO DATA. FIELD-SYMBOLS <locvar>. ASSIGN ('(PROG)ZZ_REF_LOCVAR') TO <ref_locvar>. ASSIGN <ref_locvar>->* TO <locvar>
.ZZ_REF_LOCVAR
作为自定义类池中的静态公共(public)属性,并从标准程序 PROG 和您自己的代码中访问它。小心,如果 future 的补丁删除了局部变量,它可能不再起作用。无论如何,这句话对全局变量也有效。
(1) 注意:“group”的程序是由通过 PERFORM IN PROGRAM 或 PROG 调用 SUBSCREEN 调用的程序组成的,它们有一个名为“interface work area”的公共(public)内存区域。
(2) 注意:我建议使用全局数据引用变量而不是全局字段符号,因为字段符号不能在类池等程序中全局声明。
(3) 注意:过程“X”开头的隐式增强不能通过命名直接访问局部变量,因为它们的DATA
是在增强之后;解决方法是在运行时使用字段符号访问局部变量。
关于dynamic - 在运行时从另一个程序读取非全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55734178/
在 Windows 世界中,什么是正确的名称。具有导出函数的老式 C++ DLL?不是 COM DLL,也不是 .NET DLL。我们以前通过调用 LoadLibrary() 和 GetProcAdd
目前我正在使用javaEE7,我有一个场景如下。在我的 JSF Web 应用程序中,我有一个事件监听器(不是 JSF 事件),当事件调用时,它会执行某些操作,然后将这些信息更新到我的 Web 应用程序
这不是 AJAX 请求/响应回调问题... 我正在使用 Dojo 1.5 构建网格。我正在尝试 dojo.connect具有功能的扩展/收缩按钮。我的问题是 grid.startup()在创建实际 D
非 Webkit Opera 是 very specific在某些功能中,因此通常通过 JavaScript 检测到 the following way . 但是,Opera Next 几乎是 Goo
我已查看以下链接中给出的所有日志,但未能找到 IP 地址: https://developer.couchbase.com/documentation/server/3.x/admin/Misc/Tr
我有一个命令行程序,它根据一组源文件生成一个我想在我的 Android gradle 构建 (A) 中使用的 jar 文件。这个命令行程序只是将一个 jar 文件存储在磁盘上的一个目录中。 我如何创建
下面的 htaccess 命令将所有非 www 转移到 http www RewriteEngine On RewriteCond %{HTTP_HOST} !^www\. RewriteRule ^
我正在使用自定义链接器脚本将内核镜像分为两部分。第一个是普通代码和数据,第二个是初始化代码和不再需要时将被丢弃的数据。初始化部分也不像内核本身那样在地址空间之间共享,因此如果 fork() 仍然存在(
这个问题在这里已经有了答案: Several unary operators in C and C++ (3 个答案) What is the "-->" operator in C++? (29
假设我有一个类设置如下: class A { public: virtual void foo() { printf("default implementation\n"); } }; c
#include using namespace std; int main(int argc, char *argv[]) { int i=-5; while(~(i)) {
近期,百度搜索引擎变化无常,很多企业站、行业站、门户站、论坛等站点遭到了降权,特别是比比贴分类信息网直接遭到了拔毛,这对于广大站长来说是一种打击,也是各个企业、行业的打击。 至今,很多网站已经恢复
我现在正在使用 IBM TPM v1332 + IBM TSS v1470 并尝试将一些基本关键字/密码存储到 TPM 上的非 volatile 内存中。我找到了两种方法。一种是创建一个密封对象并使用
我的 PHP 脚本中有一个正则表达式,如下所示: /(\b$term|$term\b)(?!([^)/iu 这与 $term 中包含的单词匹配,只要前后有单词边界并且它不在 HTML 标记内即可。 但
我想显示用户名称地址(请参阅 www.ipchicken.com ),但我唯一能找到的是 IP 地址。我尝试了反向查找,但也没有用: IPAddress ip = IPAddress.Parse(th
只有 UI 线程能够显示到屏幕上,还是其他线程也可以这样做? 最佳答案 不,您只能直接从 UI 线程访问 UI,但您可以编码来自其他线程的结果,例如使用 Control.Invoke 或 contro
我正在使用现代 Excel 滚动条(不是旧的 ActiveX 类型,即开发人员 > 插入 > 表单控件 > 滚动条)并且想检测它的值何时更改。我找不到有关此类对象的更改事件的任何信息。您可以在单击时分
当我使用这段代码时 IE 6 确实正确使用了指定的样式表,但所有其他浏览器在应该使用基本上声明的样式表时会忽略这两种样式表,如果您不是 IE,请使用此样式表。 有什么想法吗? 最佳答案 n
我想指定 2 mssql 表之间的关系。 付款类别和付款。 paymentcategory.id 加入 payout.category 列。 在 payout.json 模型中 我指定为外键:id,
我正在尝试制作非 volatile UDF,但似乎不可能。因此,这是我非常简单的test-UDF: Option Explicit Dim i As Integer Sub Main() i = 0
我是一名优秀的程序员,十分优秀!