【问题标题】:ASSIGN fails with variable from debugger pathASSIGN 因调试器路径中的变量而失败
【发布时间】:2020-02-12 11:19:28
【问题描述】:

我正在尝试将此结构路径的值分配给字段符号,但此路径不起作用,因为它的路径中有一个表。

但在调试器中,此路径的值会正确显示。

有没有办法通过传递一个路径将表格行的组件动态分配给字段符号? 如果没有,那么我将只阅读表格行,然后使用路径来获取想要的值。

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两次,第一次到达内部表,然后选择第一行,第二次到达行的组件。
  • @SandraRossi 我没有办法使用调试器的功能吗?或者你知道一个函数/类能够用这样的“结构路径”分配值吗?感谢您的快速答复
  • 调试器的工作方式完全不同,调试器代码只能在调试模式下工作,你不能从调试器调用代码(即如果你调用它,调试器使用的内核代码会失败) .不,没有“abappath”。有 XSL 转换对象 (xpath),但对于您的要求来说它很慢。
  • 您是否尝试过不使用 ASSIGN 而是使用这样的字符串模板:DATA(value) = |{ IG_DDIC-SUPPLYCHAINTRADETRANSACTION-INCL_SUPP_CHAIN_ITEM[ 1 ]-ASSOCIATEDDOCUMENTLINEDOCUMENT }|?注意方括号后的表格表达式需要空格
  • 这不是意味着该值将始终是一个字符串吗?

标签: abap assign


【解决方案1】:

Sandra Rossi的解决方案

调试器有自己的语法和逻辑,它根本不应用ASSIGN 算法。使用ABAP源代码,必须使用ASSIGN两次,第一次到达内部表,然后选择第一行,第二次到达行的组件。

调试器的工作方式完全不同,调试器代码只能在调试模式下工作,你不能从调试器调用代码(即如果你调用它,调试器使用的内核代码将失败)。不,没有“abappath”。有 XSL 转换对象 (xpath),但是对于您的要求来说它很慢。

非常感谢

【讨论】:

    【解决方案2】:

    这似乎是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>).
    

    Alternative 1 for (name) of the ABAP keyword documentation for the ASSIGN statement 表示“name 中的名称的结构与直接指定的方式相同”。

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

    【讨论】:

    • 那么您是否向 SAP 提交了工单?我自己也认为你是 SAP 员工
    • 说实话,不,忘记了,抱歉。 :-( 但我现在马上就做。
    猜你喜欢
    • 2016-09-07
    • 1970-01-01
    • 1970-01-01
    • 2014-04-03
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多