之前博文提到了使用abap中的sql语句删除某一条自定义表中的记录。
下面ji介绍一下,如何通过内表,一次性删除多行记录。
自定义表的结构
FUNCTION ZFM_FI_ZFIT00200.
*"----------------------------------------------------------------------
*"*"本地接口:
*" IMPORTING
*" REFERENCE(WA_KOSTL) TYPE ZFIT00200
*" EXPORTING
*" REFERENCE(R_STRING) TYPE CHAR10
*"----------------------------------------------------------------------
CLEAR R_STRING.
DATA ITAB_KOSTL LIKE ZFIT00200 OCCURS 10 WITH HEADER LINE.
ITAB_KOSTL-MANDT = '300'.
ITAB_KOSTL-KOKRS = '9999'.
ITAB_KOSTL-KOSTL = '1500'.
APPEND ITAB_KOSTL.
DELETE ZFIT00200 FROM TABLE ITAB_KOSTL.
IF SY-SUBRC = 0.
R_STRING = 'S'."成功
ELSE.
R_STRING = 'F'."失败
ENDIF.
ENDFUNCTION.
运行
我们注意到,在删除语句中,我们为三个关键字字段,都提供了数据。
那么假如,我们只为其中的两个字段提供数据,还能不能正常删除数据呢?
运行开效果
所以说,如果你想用下面这样的语句删除数据的话
DATA ITAB_KOSTL LIKE ZFIT00200 OCCURS 10 WITH HEADER LINE.
ITAB_KOSTL-MANDT = '300'.
ITAB_KOSTL-KOKRS = '9999'.
ITAB_KOSTL-KOSTL = '1500'.
APPEND ITAB_KOSTL.
DELETE ZFIT00200 FROM TABLE ITAB_KOSTL.
必须保证内表ITAB_KOSTL的关键字段都被赋值了,然后才能依据内表去删除透明表中的数据。