2

我最近有一个垃圾场,

DATA: gt_data    TYPE SORTED TABLE OF ty_data WITH NON-UNIQUE KEY bukrs gaapnm,
     ...
     lt_tabdel  TYPE standard TABLE OF ty_data.

  LOOP AT gt_data ASSIGNING <gf_data>.
    IF <gf_data>-KANSW + <gf_data>-KAUFW = 0.
      APPEND <gf_data> TO lt_tabdel.
    ENDIF.
  ENDLOOP.

  IF lt_tabdel IS NOT INITIAL.
    DELETE gt_data FROM lt_tabdel.
  ENDIF.

并且在从内部表中删除表的行 - 我有一个转储:在语句将对象转换为整数中,参数位置“对象”仅支持数字类型数据对象。在本例中,操作数“object”具有非数字数据类型“TABLE OF TY_DATA”。我就是不明白——为什么?两者都具有相同的类型...因此,如果您能提供一些建议和对错误来源的一些解释,那就太好了。

4

2 回答 2

5

您(无意中)使用了该DELETE语句的变体,该变体使用FROMTO指定索引,即表格行数。从某种意义上说,您正在编码删除由 ingt_data中的行号标识的行下方的lt_tabdel所有行,并且在尝试将 的内容转换为lt_tabdel整数时系统会崩溃。

据我所见 - 我。E. 如果您提供了完整的代码示例 - 这应该足够了:

LOOP AT gt_data ASSIGNING <gf_data>.
  IF <gf_data>-KANSW + <gf_data>-KAUFW = 0.
    DELETE gt_data.
    CONTINUE. " safety measure
  ENDIF.
ENDLOOP.

有关该CONTINUE声明的解释,请查看此答案

于 2016-02-08T09:14:28.750 回答
-1

好的,我找到了解决方案。删除 - 是错误的命令。所以我改用这个:

LOOP AT gt_data ASSIGNING <gf_data>.
    IF <gf_data>-KANSW + <gf_data>-KAUFW <> 0.
      append <gf_data> to lt_data.
    ENDIF.
  ENDLOOP.

  gt_data[] = lt_data[].

刚刚填充了另一个表并将其内容分配给主表。

于 2016-02-08T11:30:47.687 回答