我最近有转储,
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.
在删除内部表中的表格的行上 - 我有一个转储:在声明中 将对象转换为整数 参数位置仅支持数值类型数据对象 &#34;对象&#34 ;. 在本案例中,操作数&#34; object&#34;具有非数值数据类型&#34; TABLE OF TY_DATA&#34;。我无法理解 - 为什么?它们都有相同的类型......所以,如果你能提供一些建议和一些错误来源的解释,那将会很棒。
答案 0 :(得分:5)
您(无意中)使用this variant of the DELETE
statement使用FROM
和TO
来指定索引,i。即表格行数。从某种意义上说,您正在编码将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.
有关CONTINUE
语句的说明,请检查this answer。
答案 1 :(得分:-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[].
刚填充另一个表并将其内容分配给主表。