点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我有一个下面的代码,它需要超过1200万毫秒的时间来执行,
这是在用户命令处触发的,例如,用户选择第一级输出的所有记录(约30万条记录)以获取下一级的向下钻取报告,
A。 在按用户选择所有行的过程中,动态内部表
B。 然后程序选择动态内部表(
C。 然后将这些通用记录插入到第三标准内部表(GT_L2_DISP)中以进行进一步处理/显示,
在
在gt_bsis上循环,其中clearing_key =
移动gt_bsisTO到gt_l2_disp。 br> ENDLOOP。
我希望我们有一个将动态内部表转换为标准内部表的简单解决方案,
那么提议的解决方案应该是:
1。 将动态内部表
2。 从OI_STD_TAB删除记录,其中字段'BOX'<>'X',
3。 比较OI_STD_TAB的Clearing_key值,从GT_BSIS中删除记录,
4。 将余额记录从GT_BSIS(删除后)移至GT_L2_DISP,
感谢您的建议,
我不知道您的ABAP版本,但是LOOP AT dynamicitab WHERE(动态条件)应该可以工作(从7.02版开始):
此外,您可以通过RTTC使用以下命令对内部表的动态创建进行性能测试。 基于BOX组件的非唯一索引。 内部表的填充将花费一些时间,但是循环会更快。
NB:DELETE不允许动态条件(至少为7.53)。
关于GT_BSIS ,请确保您具有一个以CLEARING_KEY作为第一个组件的索引。
编辑:我的答案使用的是7.40中的内联声明(FIELD-SYMBOL(...)),因为此语法可避免分散注意力,并确保焦点 在其他方面,重要的是。 您可以通过使用ABAP语句FIELD-SYMBOLS声明字段符号来手动将其重写为旧语法(例如,在字段符号上方可以声明FIELD-SYMBOLS TYPE ANY)。
Hello Quynh,谢谢您的答复,
根据您的查询:"如何在第一个屏幕中将X标记为? =>是用户从ALV输出中选择行,
能否请您提供一些有关"
如果您在第一个屏幕上使用ALV,我认为为GT_BSIS创建一个标记列并在on_changed_data上将其标记为X甚至更快,然后再将其删除则更快。"
OK这样 用户可以从ALV中选择记录(我想您正在使用CL_GUI_ALV_GRID),然后可以处理事件DATA_CHANGED。
首先向表GT_BSIS中再添加一个列(例如MARK)
然后在内部处理方法中,为每个选定的记录编写逻辑以确定GT_BSIS的MARK列的值。您可以检查演示:BCALV_GRID_EDIT以了解更多如何处理DATA_CHANGED事件。
在第二个屏幕上,删除数据 来自GT_BSIS,MARK =X。完成。
是的,桑德拉,大约3个小时左右,
非常感谢桑德拉,让 我可以尝试使用您有价值的输入,
好,所以是ABAP 7.31。因此,您可以使用动态排序的内部表,也可以使用带有辅助排序键的标准DIT,如我所建议的那样
最初,您使用CL_ALV_TABLE_CREATE创建DIT() h是标准的,没有辅助密钥。 正如我所建议的,您可以做的就是通过使用以下代码来获取的行类型,并使用右键单击重新创建一个新表:
一周热门 更多>