资讯专栏INFORMATION COLUMN

C4C Cloud Application Studio做ABSL开发的一些性能方面的最佳实践

dance / 615人阅读

摘要:在博文里介绍了在里使用进行编程的一些性能方面的最佳实践。文章里提纲挈领地给出了一些。这里提供一些具体的例子。的提供的的接口定义也完全采用了这种支持批量操作的设计。这两种不同的输入,会导致编译生成的代码分别进入和的执行逻辑,产生性能差异。

Stefan Hagen在博文SAP Cloud Application Studio Performance Best Practices里介绍了在C4C里使用Cloud Application Studio进行ABSL编程的一些性能方面的最佳实践。

文章里提纲挈领地给出了一些guideline。这里提供一些具体的例子。

如何批量调用BO action

不好的例子:

第一行和第四行有两个循环,然后在第二次循环里调用一个比较耗时的ServiceRequest BO的item 节点上定义的标准action FinishFulfilmentProcessing。代码的时间复杂度为o(n2)

正确的做法:

优化的原理就是,C4C和其他很多基于Netweaver的SAP产品一样,其BO的核心service都支持批量操作。所谓批量操作,技术上就是指这些service的输入参数是一个内表,而非单条数据。如果您做过CRM开发,可以类比CRM_ORDER_MAINTAIN这个function module,其所有输入参数都是内表结构。C4C的BO提供的service的接口定义也完全采用了这种支持批量操作的设计。

上述不好的例子,编译出来的ABAP代码的伪代码如下:(因为C4C的后台代码没有开放给Partner和客户,我只能提供伪代码)。可以看出尽管BO的action是执行批量操作,但是这种写法并没有发挥批量操作的作用,每次在循环内部作为输入参数的内标在第二行被清空,造成每次调用BO action时输入参数只有一条记录。

而正确的例子,编译后生成的伪代码为:

能清楚地看到BO action的执行已经放到循环外部了。

如何批量执行BO Retrieve

当我们在Cloud Studio里通过代码自动完成功能试图调用BO的Retrieve方法时,IDE会提示我们Retrieve方法有三个重载(Overload), 这表明Retrieve能够支持传入不同的参数。

正确和不建议的做法分别见下图蓝色和红色代码。可以看到蓝色代码retrieve接受的输入参数是一个集合, 包含了两个ID为3和4的元素,使得41行的调用能够一次即可返回2个ServiceRequest的数据。

line 43编译后生成的ABAP代码的伪代码:

line 41编译后生成的ABAP代码的伪代码:

通过比较能发现如果传入retrieve的参数是一个ID的集合,那么编译生成的ABAP代码会调用一个接口为内表的retrieve方法,批量读取数据。

如何批量执行BO Create

对于基础的Create操作,见下列代码第54行,只支持基于单个节点的数据创建。

但是对于CreateWithReference的场景,则和第二个例子的Retrieve场景一样,不仅支持传入单个数据(第56行), 也支持传入一个集合(第58行)。

这两种不同的输入,会导致编译生成的ABAP代码分别进入CREATE_WITH_REF_1和CREATE_WITH_REF_N的执行逻辑,产生性能差异。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/92909.html

相关文章

  • C4C Cloud Application StudioABSL开发一些性能方面最佳实践

    摘要:在博文里介绍了在里使用进行编程的一些性能方面的最佳实践。文章里提纲挈领地给出了一些。这里提供一些具体的例子。的提供的的接口定义也完全采用了这种支持批量操作的设计。这两种不同的输入,会导致编译生成的代码分别进入和的执行逻辑,产生性能差异。 Stefan Hagen在博文SAP Cloud Application Studio Performance Best Practices里介绍了在...

    darryrzhong 评论0 收藏0
  • C4C Cloud Application StudioABSL开发一些性能方面最佳实践

    摘要:在博文里介绍了在里使用进行编程的一些性能方面的最佳实践。文章里提纲挈领地给出了一些。这里提供一些具体的例子。的提供的的接口定义也完全采用了这种支持批量操作的设计。这两种不同的输入,会导致编译生成的代码分别进入和的执行逻辑,产生性能差异。 Stefan Hagen在博文SAP Cloud Application Studio Performance Best Practices里介绍了在...

    jzman 评论0 收藏0
  • C4C Cloud Application StudioABSL开发一些性能方面最佳实践

    摘要:在博文里介绍了在里使用进行编程的一些性能方面的最佳实践。文章里提纲挈领地给出了一些。这里提供一些具体的例子。的提供的的接口定义也完全采用了这种支持批量操作的设计。这两种不同的输入,会导致编译生成的代码分别进入和的执行逻辑,产生性能差异。 Stefan Hagen在博文SAP Cloud Application Studio Performance Best Practices里介绍了在...

    fuchenxuan 评论0 收藏0
  • Document flow API in SAP CRM and C4C

    摘要:的和描述信息已经能够正常显示了。同时在区域也能看到该关联关系假设我需要在里开发一个功能,允许客户能够手动将两个关联起来。的实现代码假设我想把和关联起来,我需要打开,在新字段里手动输入,然后点击按钮成功执行之后,在的即可看到这个关联关系。 Document flow API in CRM 以一个具体的例子来说明。在Appointment的Overview page上能看见一个名叫Refe...

    i_garfileo 评论0 收藏0
  • Document flow API in SAP CRM and C4C

    摘要:的和描述信息已经能够正常显示了。同时在区域也能看到该关联关系假设我需要在里开发一个功能,允许客户能够手动将两个关联起来。的实现代码假设我想把和关联起来,我需要打开,在新字段里手动输入,然后点击按钮成功执行之后,在的即可看到这个关联关系。 Document flow API in CRM 以一个具体的例子来说明。在Appointment的Overview page上能看见一个名叫Refe...

    Sanchi 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<