我正在尝试将此结构路径的值分配给字段符号,但此路径不起作用,因为它的路径中有一个表。
但是在调试器中,此路径的此值会正确显示。
有没有办法通过传递一条路径将表行的组件动态分配给字段符号? 如果没有,那么我将只读取表格行,然后使用路径获取所需的值。
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
算法。使用 ABAP 源代码,您必须使用两次ASSIGN
,第一行到达内部表,然后选择第一行,第二行到达该行的组件。
调试器的工作方式完全不同,调试器代码仅在调试模式下工作,您无法从调试器调用代码(即,如果调用它,调试器使用的内核代码将失败(。不,没有"阿帕帕斯"。有 XSL 转换对象 (xpath(,但对于您的要求来说它很慢。
谢谢
这似乎是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>).
ASSIGN
语句的ABAP关键字文档(name)
备选方案1说,"name
中的名称的结构与直接指定的名称相同"。
但是,此声明紧跟"name 的内容必须是数据对象的名称,其中可能包含偏移量和长度、结构组件选择器以及用于在类或对象中分配结构化数据对象和属性的组件选择器",该列表不包括我们在此处需要的表表达式。