在内部表的删除表中键入冲突

Ale*_*erK 1 sap abap

我最近有一个转储,

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.
Run Code Online (Sandbox Code Playgroud)

并且在内部表中删除表的行 - 我有一个转储:在语句中将对象转换为整数只在参数位置"对象"支持数值类型的数据对象.在本例中,操作数"对象"具有非数值数据类型"TABLE OF TY_DATA".我只是无法理解 - 为什么?它们都有相同的类型......所以,如果你能提供一些建议和一些错误来源的解释,那将会很棒.

vwe*_*ert 5

您(无意中)使用了这个DELETE使用FROMTO指定索引语句变体,即表行数.从某种意义上说,您正在编码删除gt_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.
Run Code Online (Sandbox Code Playgroud)

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