首页 > 解决方案 > 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 

标签: abapassign

解决方案


这似乎是该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结构与直接指定的方式相同”。

但是,该声明紧随其后的是“名称的内容必须是可能包含偏移量和长度、结构组件选择器以及用于在类或对象中分配结构化数据对象和属性的组件选择器的数据对象的名称”,一个列表这包括我们在这里需要的表表达式。


推荐阅读