云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

对象存储_查理与巧克力工厂百度云_试用

小七 141 0

您已经实现了一个全新的Fiori前端服务器,配置了Fiori启动板,并启用了最新的My Paystubs应用程序(v3,来自Fiori for SAP HCM 2.0)。您已将其连接到ERP后端。你很高兴向你的管理层展示,让员工了解他们的全部工资单记录是多么容易。

但有一个问题。当你运行应用程序时,它只旋转了一分钟,最终以可怕的错误终止:

500连接超时

你关闭错误对话框,第二条消息告诉你当前没有可用的工资单。

不用担心,你认为,这是新实现的,也许它只需要编译和加载缓存。你再次运行应用程序,但得到相同的结果。事实上,每次你运行它,你都会得到相同的结果:它旋转整整一分钟,然后超时。

你检查是否错过了一个关键的音符,但没有,你完全是最新的。您的前端有最新和最好的UIHR002支持包,后端有最新和最好的GBX01HR5支持包。Fiori应用程序库的实现指南明确指出,该应用程序与EhP8后端完全兼容;不需要S/4HANA。它还与AnyDB完全兼容;您不需要HANA作为您的数据库。

这是一个重要的问题,因为您的组织是许多尚未迁移到HANA的组织之一。您运行的是SQL Server(或者Oracle)。有什么问题吗?

您可以通过浏览器开发人员工具看到,与HCM后端的连接正在工作,因为应用程序能够拉动您的PERNR。前端的/IWFND/ERROR\u日志和后端的/IWBEP/ERROR\u日志中都没有显示明显的错误。其他应用程序使用相同的别名连接到相同的后端工作正常。而且,更重要的是,你的老式企业门户网站,运行着针对ESS的Web Dynpro Java应用程序,可以毫无问题地调出工资单。

你把头发拔了一段时间,但最终你意识到,应用程序的性能实在太差了。它试图在显示除旋转图标以外的任何东西之前,从数据库中加载至少10年的工资单。如果你测试一个"新员工"用户,一个只有一两年的支付历史的用户,应用程序会返回结果。它很慢,但会显示工资条。

所以这是一个性能问题。

通过一些调试和跟踪,您确定应用程序,或者更确切地说,它调用的OData服务HCMFAB\u MYPAYSTUBS\u SRV,调用后端方法CL\u HR\u PAY\u ACCESS~GET\u PARTICIPATING\u PERNRS。该方法花费了大量的时间来读取表HRPY\u RGDIR(Payroll Results目录)。挂起的特定代码行是:

一切都很好,除了当您查看SE11中HRPY\u RGDIR的定义时,唯一的索引是主键,它按顺序由字段MANDT、PERNR、SEQNR组成。

MANDT当然是内置在ABAP处理器中的,所以这不是问题所在。但是,PERNR是您试图选择的字段,而不是作为WHERE条件提供,并且您的WHERE条件包括两个不在索引中的字段PERSDATA和PERSON,位于唯一其他字段SEQNR的前面。

这意味着此select语句不能有效地使用主键,因此为了满足在任何条件下,它都必须扫描整个表。如果您已经将此系统用于payroll一段时间了,那么很容易在该表中有数百万行。难怪它超时了!

你需要一个二级索引。我们可以在一分钟内讨论为什么SAP不把一个作为标准,但与此同时,你的老板正在期待结果,你不能给他看一个应用程序,优惠券代理平台哪个好,它需要很长时间才能加载,而且只适用于最近聘用的员工。

dbaccompt清楚地告诉你,由于上述代码导致的特定seek在你的数据库上花费了过多的时间,但更重要的是,它暗示了一种改进。因为您的底层数据库是sqlserver,所以dbaccompt可以使用一个内置的索引分析器工具。它建议索引:

相等谓词中的列=MANDT,SEQNR,PERSON,PERSDATAIncluded column=PERNR

索引分析器告诉您这样一个索引将使这个seek的性能提高99.96%。这是很大的进步!

不过,只有一个问题。当你去SE11创建索引时,没有"包含列"的函数。如何解决这个问题?

答案见注释1775008(索引的定义包括MSSQL服务器的列)。本说明适用于BW系统,而您的不是BW系统,但是,该技术在您的ECC系统中可以正常工作。

我不会让您去阅读说明,别担心。我将在这里为您详细说明。

使用SE11为HRPY\u RGDIR创建扩展索引:

称之为Z01,或适用于您的命名约定的东西,将其设置为非唯一的,并用于选定的数据库系统。选择MSS作为您的数据库。添加索引字段MANDT、SEQNR、PERSON和PERSDATA,顺序为:

保存并激活索引。别忘了你需要把它分配给一个Z包。在我的小沙盒系统中,即使表中有超过300万行,激活也只需要大约一分钟。

现在转到SA38并运行程序RSMSS\u ANALYZER。切换到"索引处理"选项卡,输入table HRPY\u RGDIR,然后单击"刷新"。刷新是必要的,然后才能看到自定义索引。输入新索引,然后再次单击刷新。现在您应该看到分配给索引的列,以及可用表列的列表。从右侧列表中,找到并选择PERNR,然后单击左箭头按钮将其移动到"已分配的包含列"列表:

选中联机创建框,然后单击"计划索引更新"。设置为立即执行。在我的系统中,运行大约需要75秒。

现在再试试你的应用程序!