一次性删除SAP Dynamic内部表行的任何选项,而不是循环/索引

2020-09-04 03:04发布

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

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


我有一个下面的代码,它需要超过1200万毫秒的时间来执行,

这是在用户命令处触发的,例如,用户选择第一级输出的所有记录(约30万条记录)以获取下一级的向下钻取报告,

A。 在按用户选择所有行的过程中,动态内部表的记录几乎少于300k,其中字段" BOX"标记为用户在第一个输出中选择的那些行的" X"

B。 然后程序选择动态内部表()与另一个标准内部表(GT_BSIS)进行比较(在动态内部表中标记为" X")的记录,该标准内部表的记录略多于300K,正在考虑(检查)另一个字段值(清除) 两个表的键值都应该相同,可以为1:N)

C。 然后将这些通用记录插入到第三标准内部表(GT_L2_DISP)中以进行进一步处理/显示,

分配上的环。 结构的
在gt_bsis上循环,其中clearing_key =
移动gt_bsisTO到gt_l2_disp。 br> ENDLOOP。

我希望我们有一个将动态内部表转换为标准内部表的简单解决方案,

那么提议的解决方案应该是:

1。 将动态内部表转换为标准内部表,例如OI_STD_TAB,

2。 从OI_STD_TAB删除记录,其中字段'BOX'<>'X',

3。 比较OI_STD_TAB的Clearing_key值,从GT_BSIS中删除记录,

4。 将余额记录从GT_BSIS(删除后)移至GT_L2_DISP,

感谢您的建议,

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

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


我有一个下面的代码,它需要超过1200万毫秒的时间来执行,

这是在用户命令处触发的,例如,用户选择第一级输出的所有记录(约30万条记录)以获取下一级的向下钻取报告,

A。 在按用户选择所有行的过程中,动态内部表的记录几乎少于300k,其中字段" BOX"标记为用户在第一个输出中选择的那些行的" X"

B。 然后程序选择动态内部表()与另一个标准内部表(GT_BSIS)进行比较(在动态内部表中标记为" X")的记录,该标准内部表的记录略多于300K,正在考虑(检查)另一个字段值(清除) 两个表的键值都应该相同,可以为1:N)

C。 然后将这些通用记录插入到第三标准内部表(GT_L2_DISP)中以进行进一步处理/显示,

分配上的环。 结构的
在gt_bsis上循环,其中clearing_key =
移动gt_bsisTO到gt_l2_disp。 br> ENDLOOP。

我希望我们有一个将动态内部表转换为标准内部表的简单解决方案,

那么提议的解决方案应该是:

1。 将动态内部表转换为标准内部表,例如OI_STD_TAB,

2。 从OI_STD_TAB删除记录,其中字段'BOX'<>'X',

3。 比较OI_STD_TAB的Clearing_key值,从GT_BSIS中删除记录,

4。 将余额记录从GT_BSIS(删除后)移至GT_L2_DISP,

感谢您的建议,

付费偷看设置
发送
7条回答
My梦
1楼-- · 2020-09-04 03:44

感谢Quynh的回复,

代码不起作用,因为SAP版本为ECC 6.0,所以内联声明在我们的SAP系统环境中可能不起作用

最适合我的解决方案是(您对我没错):

从另一个ONE(动态内部表)更新另一个标准内部表(列标志='X'),该表在第一级ALV网格输出中显示( 为此输出使用FM REUSE_ALV_GRID_DISPLAY ),然后选择所有行,

这意味着对于第一级ALV网格输出的DIT(动态内部表=> )中的选定行,将DIT中的Clearing_key字段值与标准内部表(SIT => GT_BSIS)的值进行比较, 选择ALV GRID Output(DIT)中的所有ROWS期间,SIT对应的行被标记为" X"

感谢您对Advance的帮助,

一周热门 更多>