在循环内选择查询

2020-08-23 22:52发布

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

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


专家您好,

我有一个要求,我必须循环一个内部表(it_final),并使用将it_final的数据与我的 Ztable(zebeln_table)进行比较 选择查询

如果ztable(zebeln_table)中已经存在数据,则应该跳过它。 否则,我将对该数据进行一些操作。

我在循环内开发了 select查询,这是编码标准不接受的。

希望您能理解要求。

谢谢。

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

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


专家您好,

我有一个要求,我必须循环一个内部表(it_final),并使用将it_final的数据与我的 Ztable(zebeln_table)进行比较 选择查询

如果ztable(zebeln_table)中已经存在数据,则应该跳过它。 否则,我将对该数据进行一些操作。

我在循环内开发了 select查询,这是编码标准不接受的。

希望您能理解要求。

谢谢。

付费偷看设置
发送
7条回答
葫芦娃快救爷爷
1楼-- · 2020-08-23 23:19

您好 Dinesh Kumar

不建议您使用这种方法,因为它会严重影响性能。 相反,建议您遵循以下步骤:

1)在您的自定义表上为内部表中的所有条目编写一个选择查询。 使用FOR ALL ENTRIES编写查询之前,建议您也执行以下操作。

a)检查表是否不为空

b)排序并确保所有重复项

2)对内部表进行排序,该表具有根据键字段在上面获取的条目。

3)在循环内部,您可以使用read 通过使用"关键字段"来声明。

这将确保更好的性能并满足编码标准。

注意!

打个大熊猫
2楼-- · 2020-08-23 23:35

不推荐 ,出于同样的原因,SELECT ..... END OF SELECT。 不应使用:

  • 对于每次迭代,都必须通过网络对数据库进行连接和请求,从而导致整个"循环"的性能下降
  • < li>在单个select语句中仅选择必要的数据总是胜过相同的操作,但会分散到许多select语句中

从数据库中选择大型数据集后,您需要注意的事情是 是否应该通过主键或辅助键访问这些内部表,如果只需要单次迭代中的某些记录(否则您将再次在一定程度上降低性能)。

小灯塔
3楼-- · 2020-08-23 23:33

Hi Dinesh ,

是的,在循环内进行选择查询是不可接受的。

1。 只需在循环前从Z表获取内部表中所有条目的必填字段即可。

2。 然后,内部循环读取上面获取的Z表的数据,然后根据需要进行操作。

关于,
Mohit Sharma

奄奄一息的小鱼
4楼-- · 2020-08-23 23:28

请分享您的代码

木偶小白
5楼-- · 2020-08-23 23:26

嗨Dinesh

您可以使用所有条目在循环之前获取数据,然后可以使用内部循环读取。

例如,
 如果it_final不是初始的
 选择field1 field2 ... fieldn
 来自Zebeln_table
 到表it_zebelntbl
 对于it_final中的所有条目
 其中field1 = it_final-field1。
 万一。
 在it_final循环到wa_final。
 用键读取表it_​​zebelntbl。
 *如果存在数据
 如果sy-subrc = 0。
 *如果不存在数据
 其他。
 万一
 Endloop。  

谢谢

古纳

jovirus
6楼-- · 2020-08-23 23:29

但是Dinesh,从这个问题的开头您要引用的选择查询在哪里?

一周热门 更多>