点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)你好 我正在使用HANA上的E...
点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)你好 我正在使用HANA上的E...
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
你好
我正在使用HANA上的ECC系统。 该系统中没有标准的ABAP CDS,但我为销售订单建立了自己的数据模型。
为简单起见,假设我有
-销售订单标题的ZI_SalesOrder视图
-销售订单项目的ZI_SalesOrderItem视图
-销售订单项目条件的ZI_SalesCondition视图(表KONV)
让我们专注于销售订单项目以及与条件的关联。 定义如下:
定义视图ZI_SalesOrderItem 从vbap中选择 vbak.vbeln上的内部连接vbak = vbap.vbeln vbap.vbeln上的内部连接vbup = vbup.vbeln 和vbap.posnr = vbup.posnr 在$ projection.SalesOrder = _SalesOrder.SalesOrder上,将[1..1]与ZI_SalesOrder关联为_SalesOrder 将[*]与ZI_SalesCondition关联为_Conditions 在$ projection.ConditionId = _Conditions.ConditionId上 和$ projection.SalesOrderItem = _Conditions.ConditionItem ...
条件视图如下所示:
定义视图ZI_SalesCondition 从konv中选择 { 将konv.knumv键作为ConditionId, konv.kposn键作为ConditionItem, 将konv.stunr键作为ConditionStep, konv.zaehk密钥为ConditionCounter, konv.kschl作为ConditionType, konv.kwert作为ConditionValue, konv.waers作为ConditionCurrency, 案件 当konv.krech ='A'时div(konv.kbetr,10) 否则konv.kbetr 以ConditionAmount结尾 案件 当konv.krech ='A'时强制转换('%'为abap.char(3)) 否则konv.waers 以ConditionAmountUnit结尾 } 其中konv.kappl ='V'和konv.kinak =''
现在,在此数据模型之上,我创建了一个在Fiori应用程序中使用的消耗视图。 在此视图中,我需要显示项目和一些条件值。 例如,我在一栏中需要MWST条件值。
这就是我使用关联的方式:
//税 Item._Conditions [1:ConditionType ='MWST']。ConditionAmount作为TaxRate, Item._Conditions [1:ConditionType ='MWST']。ConditionAmountUnit作为TaxRateUnit, Item._Conditions [1:ConditionType ='MWST']。ConditionValue作为TaxValue,
一切正常...但是速度很慢。 非常慢。 在生产环境中,仅显示一个包含4个项目的销售订单可能需要8到9秒钟。
我使用ST05 tcode获取跟踪计划,并在Eclipse中将其打开。 我没有使用此工具,但我了解数据库会读取所有条件类型为MWST的记录,然后将其与所选销售订单的条件ID进行比较,而不是通过逻辑方式搜索,而是从 销售订单,然后在KONV中获取相应的记录。
是什么让我这样想:
如您所见,条件表中选择了15905812条记录! 如果我看一下细节:
我可以看到所有这些都是针对KONV条件的,如果它来自条件ID(KNUMV),我将获得超快的速度。
我的问题是:对此我该怎么办? 在CDS视图或数据库中我可以做些什么吗?
我在CDS中尝试过,但是没有改变:
Item._Conditions [1:ConditionId = ConditionId和ConditionItem = ConditionItem and ConditionType ='MWST']。ConditionAmount作为TaxRate,
真的需要您的帮助...谢谢。
(14.1 kB)
为了明确起见,在top-query中,我指的是应用程序中使用的实际查询,而不是CDS视图。
关于分解方法:这些表之间的联接条件中缺少MANDT字段,这可能导致执行计划不使用现有索引。
当然,如果没有此联接的解释计划/计划的解释,我们所能做的就是猜测为什么它很慢。
一周热门 更多>