基于另一个内部表删除一个内部表中的记录

2020-08-14 09:14发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


如果我要删除一个内部表中的所有条目(基于一个字段,而另一个内部表中的条目不存在),该怎么做。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


如果我要删除一个内部表中的所有条目(基于一个字段,而另一个内部表中的条目不存在),该怎么做。

付费偷看设置
发送
8条回答
nice_wp
1楼-- · 2020-08-14 09:44

你好

请检查以下代码:

将gt_itab1循环到gs_itab1。

使用表键将gt_itab2读入gs_itab2 mandt = gs_itab1-mandt

lifnr = gs_itab1-lifnr

vbeln = gs_itab1-vbeln

posnr = gs_itab1-posnr

augru = gs_itab1-augru

cdate = gs_itab1-cdate

kunnr = gs_itab1-kunnr

kunwe = gs_itab1-kunwe

bstkd = gs_itab1-bstkd

docid = gs_itab1-docid

ean11 = gs_itab1-ean11

part_debit = gs_itab1-part_debit

errcode = gs_itab1-errcode。

IF sy-subrc EQ gc_zero_num。

将gs_itab2移动到gs_error1。

gs_error1-message = text-036。

将gs_error1附加到gt_error1。

清除gs_error1。

从gs_itab2删除表gt_itab2。

ENDIF。

ENDLOOP。

致谢

Kannaiah

暮风yp
2楼-- · 2020-08-14 09:46

嗨,

在循环内删除可能会导致性能问题。 相反,您可以使用字段符号。

Itab1-您要从中删除

itab2-检查表。

field1-比较字段

使用以下代码:

FIELD-SYMBOLS:喜欢itab1。

在itab1分配上循环
用密钥field1 = -field1将表itab2读入wa_itab2。
如果sy-subrc NE 0.
清除:- 字段1。
ENDIF。
清除:wa_itab2。
ENDLOOP。
删除itab1字段1的初始位置。

SAP小菜
3楼-- · 2020-08-14 09:29

嗨,

说两个 int表ITAB1和ITAB2。

两者都有一些共同的字段。

在ITAB1`循环。

用键f1 = itab1-f1读取表itab2。/p>

,如果sy-subrc <> 0。

删除itab1索引sy-tabix。

endif。

endloop。

删除ITAB1中所有不像ITAB2一样的条目,

奖励(如果有用)

问候

安吉

# p#

您好,Nikhil,

考虑到性能,您也可以执行以下操作:

对要执行检查的字段将要删除的表进行排序。

按要在其上进行检查的字段对要检查的表进行排序。

然后

LOOP AT

读取 表与键 = -不传输任何字段。

如果SY-SUBRC <> 0。

删除其中 = -。/p>

ENDIF。

ENDLOOP。

如果表中的第一个字段,那么您还可以在循环中执行逻辑 在NEW .... ENDAT事件中,以提高性能(减少冗余循环的数量)。

希望这会有所帮助。

关于此,

Aditya

CPLASF-自律
4楼-- · 2020-08-14 09:27

不要以为删除循环是性能问题。 还有其他方法吗?

天桥码农
5楼-- · 2020-08-14 09:48

嗨,

下面是一个示例:

只需循环遍历第一个itab,然后检查itab2是否 如果没有,则在itab1中包含相同的条目,然后删除。

希望这对您有帮助...

PS 请奖励积分以获取有用的答案...

消息的编辑者:

viraylab

一只江湖小虾
6楼-- · 2020-08-14 09:51

您好,

如果要考虑两个表itab1和itab2

用键itab2-field1 = itab1-field1和itab2-field2 = itab1-field2读取表itab2。

如果sy-subrc EQ 0,

删除itab2,条件是.....。

Endif。

谢谢..

一周热门 更多>