字段符号尚未分配

问题描述 投票:0回答:1

我编写了一小段代码,它根据另一个内部表 it_alv_to_check 中的值更新 it_alv 中的数据。在执行 ELSE 语句后的代码时,我收到错误:尚未分配字段符号。我首先在使用 READ TABLE 语句时动态分配它。如何确保即使sy-subrc <> 0,字段符号也会被赋值?


 FIELD-SYMBOLS: <to_check> LIKE LINE OF it_alv.

   LOOP AT it_alv ASSIGNING FIELD-SYMBOL(<fs_alv_2>).
      READ TABLE it_alv_to_check ASSIGNING <to_check>  WITH KEY belnr = <fs_alv_2>-belnr.
      IF sy-subrc = 0.
        <fs_alv_2>-statement_year = <to_check>-statement_year.
        <fs_alv_2>-laufi = <to_check>-laufi.
        <fs_alv_2>-user_field_1 = <to_check>-user_field_1.
        <fs_alv_2>-stceg = <to_check>-stceg.
        <fs_alv_2>-name1 = <to_check>-name1.
        <fs_alv_2>-monat_from = <to_check>-monat_from.
      ELSE.
        <fs_alv_2>-statement_year = <to_check>-statement_year.
        <fs_alv_2>-laufi = <to_check>-laufi.
        <fs_alv_2>-user_field_1 = <to_check>-user_field_1.
        <fs_alv_2>-stceg = <to_check>-stceg.
        <fs_alv_2>-name1 = <to_check>-name1.
        <fs_alv_2>-monat_from = <to_check>-monat_from.
      ENDIF.
    ENDLOOP.

abap internal-tables sap
1个回答
0
投票

在这种情况下,您无法分配字段符号。您使用

READ TABLE
语句读取内部表,如果使用给定键(即 sy-subrc = 0)找到
条目
,找到的表行将被 分配给字段符号 并且字段符号指向表记忆中的一行。

否则,如果未找到表行,则没有可为其分配字段符号的条目,并且字段符号保持不变或初始。在这种情况下,您不能依赖它被分配(它可以被分配,但指向错误的条目)或假设分配本身(保持初始状态,因为它之前未被分配)。

更多信息:阅读表格,结果...分配

根据您想要实现的目标,您可以在 else 分支中分配一些默认值或实现一些其他逻辑来处理这种情况。

© www.soinside.com 2019 - 2024. All rights reserved.