abap - ASSIGN 因调试器路径中的变量而失败
问题描述
我正在尝试将此结构路径的值分配给字段符号,但此路径不起作用,因为它的路径中有一个表。
但是在调试器中,这个路径的值会正确显示。
有没有办法通过传递一个路径将表格行的组件动态分配给字段符号?如果没有,那么我将只阅读表格行,然后使用路径来获取想要的值。
ls_struct (Struct)
- SUPPLYCHAINTRADETRANSACTION (Struct)
- INCL_SUPP_CHAIN_ITEM (Table)
- ASSOCIATEDDOCUMENTLINEDOCUMENT (Element)
i_component_path = |IG_DDIC-SUPPLYCHAINTRADETRANSACTION-INCL_SUPP_CHAIN_ITEM[1]-ASSOCIATEDDOCUMENTLINEDOCUMENT|.
ASSIGN (i_component_path) TO FIELD-SYMBOL(<lg_value>).
IF <lg_value> IS NOT ASSIGNED.
return.
ENDIF.
<lg_value> won't be assigned
解决方案
这似乎是该ASSIGN
声明的一个相当出乎意料的限制。可能值得一张 SAP 的 ABAP 语言组的门票,以澄清它是否甚至是一个错误。
虽然这有效:
ASSIGN data-some_table[ 1 ]-some_field TO FIELD-SYMBOL(<lv_source>).
以字符串表示的相同不会:
ASSIGN (`data-some_table[ 1 ]-some_field`) TO FIELD-SYMBOL(<lv_source>).
该语句(name)
的 ABAP 关键字文档的替代 1ASSIGN
表示“[t] 中的名称的name
结构与直接指定的方式相同”。
但是,该声明紧随其后的是“名称的内容必须是可能包含偏移量和长度、结构组件选择器以及用于在类或对象中分配结构化数据对象和属性的组件选择器的数据对象的名称”,一个列表这不包括我们在这里需要的表表达式。
推荐阅读
- mysql - 在 MySQL 触发器中获取更新的列
- c# - Streamreader 多次读取同一行 C#
- android - 如何设置我的应用程序自己的振动/声音设置?
- sqlite - 根据不同表中的值修改列记录
- python - 如何将布尔值列表转换为单个 int,其中每个布尔值都被解释为位?
- postgresql - 带有横向连接(大表和小表)的 PostgreSQL 规划器
- python - 在熊猫数据框中查找最后交易日期
- swift - 发件人: UIImageView !== CollectionViewCell 中的 UIImageView
- laravel - 激活网关 aws Lumen 时出现 500 内部服务器错误
- vba - 使用变通办法通过 Office 365 ProPlus 上的 Outlook 自动发送电子邮件时,如何让 .edit 在 MS Access 中工作?