天天看点

SAP利用内表删除多条数据(自定义表)

之前博文提到了使用abap中的sql语句删除某一条自定义表中的记录。

下面ji介绍一下,如何通过内表,一次性删除多行记录。

自定义表的结构

SAP利用内表删除多条数据(自定义表)

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.           

运行

SAP利用内表删除多条数据(自定义表)
SAP利用内表删除多条数据(自定义表)

我们注意到,在删除语句中,我们为三个关键字字段,都提供了数据。

那么假如,我们只为其中的两个字段提供数据,还能不能正常删除数据呢?

SAP利用内表删除多条数据(自定义表)

运行开效果

SAP利用内表删除多条数据(自定义表)

所以说,如果你想用下面这样的语句删除数据的话

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的关键字段都被赋值了,然后才能依据内表去删除透明表中的数据。