dynamic - 表行表达式的动态 ASSIGN
问题描述
在我的 ABAP 报告中,我有一些结构:
data:
begin of struct1,
field1 type char10,
end of struct1.
我可以直接访问它的字段 field1:
data(val) = struct1-field1
或动态分配:
assign ('struct1-field1') to field-symbol(<val>).
我还有一些内部表:
data: table1 like standard table of struct1 with default key.
append initial line to table1.
我可以直接访问第一行的列 field1:
data(val) = table1[ 1 ]-field1.
但我无法通过动态分配访问 field1:
assign ('table1[ 1 ]-field1') to field-symbol(<val>).
赋值后 sy-subrc 等于“4”。
为什么?
解决方案
Sandra 是绝对正确的,如果帮助中没有指定表表达式,那么它们是不允许的。
您可以将 ASSIGN COMPONENT 语句用于您的动态性:
FIELD-SYMBOLS: <tab> TYPE INDEX TABLE.
ASSIGN ('table1') TO <tab>.
ASSIGN COMPONENT 'field1' OF STRUCTURE <tab>[ 1 ] TO FIELD-SYMBOL(<val>).
但是,由于此版本行规范的性质,这种动态仅适用于索引表(标准 + 排序) 。如果您尝试将散列表传递给字段符号,它将转储。
推荐阅读
- javascript - Javascript RegExp 在具有嵌套子字符串的字符串上应用跨度标签
- reactjs - PrimeReact 数据表 - 如何在单元格上显示工具提示或标题?
- python - Azure 函数 - Python - Visual Studio 代码
- c# - 如何使用 forEach 循环将项目添加到元组?
- html - 如何在矩形右侧创建新月边界半径?
- sql - SQL:选择最近的日期时间行以及特定的列值
- python - 避免使用嵌套的 for 循环来测试参数
- postgresql - 欺骗 Docker 中可用的可用空间或欺骗 Postgres 和 RabbitMQ
- java - 为什么 java.awt.Font.getStringBounds 在不同的机器上给出不同的结果?
- c# - 遍历嵌套对象以从每个对象中获取单个属性