我最近有一个转储,
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".我只是无法理解 - 为什么?它们都有相同的类型......所以,如果你能提供一些建议和一些错误来源的解释,那将会很棒.
您(无意中)使用了这个DELETE使用FROM和TO指定索引的语句变体,即表行数.从某种意义上说,您正在编码删除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声明的解释,请检查此答案.