2020-08-18 05:58发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家好,
我正在查询ACDOCA表以在S4中获取大约1M条目。
然后我在每个条目处循环查看我的利润中心值。
在匹配利润中心值的情况下,我会根据自己的值更改货币金额字段。
然后,我使用COLLECT合并每个利润中心的结果。
这会导致性能问题。
有帮助吗?
此致
Bikram。
为什么不将逻辑"压低"到数据库级别,并避免传输所有数据。 通过使用CASE表达式调整OSL字段的值并使用GROUP BY,您可以达到相同的目的。 这样,您就可以将聚合的数据记录传输到ABAP层。
示例代码:
从acdoca到表it_table的相应字段中选择gjahr belnr docln ryear tsl wsl wsl2 wsl3 hsl ksl osl msl prctr
rldnr = lc_0L AND gjahr EQ gjahr AND segment IN segment AND poper = XXX and racct IN XXX。
在it_table上循环进入ls_collect。 如果ls_collect-prctr + 0(3)='XXX'。 ls_collect-osl = ls_collect-ksl。 endif。 clear: ls_collect-prctr。将ls_collect收集到ity_table中。清除:ls_collect。 endloop。
您可以显示更多详细信息吗? 仅凭这些信息很难回答。
据我了解,您怀疑执行COLLECT语句时的性能问题吗? 它是标准表吗?能否显示内部表的定义以及如何使用内部表(特别是对于任何写访问而言)?
您好
在我看来,您的COLLECT语句的结果将与起点(表IT_TABLE)几乎相同。 这是因为您的结构中有太多类似字符的字段(GJAHR,BELNR,DOCLN)。 这些字段将用于收集您的数据。
最多设置5个标签!
为什么不将逻辑"压低"到数据库级别,并避免传输所有数据。 通过使用CASE表达式调整OSL字段的值并使用GROUP BY,您可以达到相同的目的。 这样,您就可以将聚合的数据记录传输到ABAP层。
示例代码:
从acdoca到表it_table的相应字段中选择gjahr belnr docln ryear tsl wsl wsl2 wsl3 hsl ksl osl msl prctr
rldnr = lc_0L AND gjahr EQ gjahr AND segment IN segment AND poper = XXX and racct IN XXX。
在it_table上循环进入ls_collect。
如果ls_collect-prctr + 0(3)='XXX'。
ls_collect-osl = ls_collect-ksl。
endif。
clear: ls_collect-prctr。
将ls_collect收集到ity_table中。
清除:ls_collect。
endloop。
您可以显示更多详细信息吗? 仅凭这些信息很难回答。
据我了解,您怀疑执行COLLECT语句时的性能问题吗? 它是标准表吗?
能否显示内部表的定义以及如何使用内部表(特别是对于任何写访问而言)?
您好
< p>您要合并每个"成本中心"的结果,但是您要清除LS_COLLECT结构中的"成本中心"字段。在我看来,您的COLLECT语句的结果将与起点(表IT_TABLE)几乎相同。 这是因为您的结构中有太多类似字符的字段(GJAHR,BELNR,DOCLN)。 这些字段将用于收集您的数据。
问候,Mateusz
一周热门 更多>