`
JerryWang_SAP
  • 浏览: 1045693 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

如何使用ABAP异步RFC调用提升应用性能

阅读更多

采用如下report 研究asynchronous RFC call的性能提升:

PARAMETERS: num TYPE i OBLIGATORY DEFAULT 10.
DATA:ls_line     TYPE zjerry1,
     lv_start    TYPE i,
     lv_end      TYPE i,
     lv_taskid   TYPE c LENGTH 8,
     lv_index    TYPE c LENGTH 4,
     lv_finished TYPE i,
     lv_count    TYPE i.

START-OF-SELECTION.
  PERFORM solution2.

FORM solution2.
  DELETE FROM zjerry1.

  GET RUN TIME FIELD lv_start.

  DO num TIMES.
    lv_index = sy-index.
    lv_taskid = 'Task' && lv_index.

    CALL FUNCTION 'ZINSERT' STARTING NEW TASK lv_taskid PERFORMING callback ON END OF TASK
      EXPORTING
        iv_index = CONV comm_product-product_id( sy-index ).
  ENDDO.

  WAIT UNTIL lv_finished = num.
  GET RUN TIME FIELD lv_end.

  lv_end = lv_end - lv_start.

  WRITE: / 'Solution2: ' , lv_end COLOR COL_NEGATIVE.

  SELECT COUNT( * ) INTO lv_count FROM zjerry1.

  ASSERT lv_count = num.
ENDFORM.


FORM callback USING p_task TYPE clike.
  ADD 1 TO lv_finished.
ENDFORM.
 
function module ZINSERTmonitor的是一个比较费时的操作,在末尾会有一个DB的insertion:
 
DATA: ls_line TYPE zjerry1,
        lv_cal  TYPE timestamp,
        lv_cal1 TYPE timestamp.

  GET TIME STAMP FIELD lv_cal.
  DO 10000 TIMES.
    lv_cal = lv_cal + 1.

    lv_cal = ( lv_cal * 13 ) / 12.

    DO 100 TIMES.
      GET TIME STAMP FIELD lv_cal1.

      lv_cal = lv_cal  * 13 / 17.
    ENDDO.
  ENDDO.

  ls_line-code_value = iv_index.

  INSERT zjerry1 FROM ls_line.
  ASSERT sy-subrc = 0.
 
  COMMIT WORK AND WAIT.

DB的结构非常简单:

如果在report 里直接调用ZINSERT, response time为4.493 seconds.

如果在DO 2 TIMES里调用两次ZINSERT, 两次function module call是依次执行的,response time为8.493 seconds

如果用report 以参数2 以异步的方式调用ZINSERT 2次,report 本身的response time为3.074 seconds:

number = 3:

number = 5:

0
0
分享到:
评论

相关推荐

    abap-RFC学习精华

    2. aRFC(异步RFC):提供并发调用能力,允许在被调用系统不可用时仍然发送请求,系统会持续尝试直到收到响应。这提高了效率,特别是在需要批量处理或非即时响应的场景下。 3. tRFC(事务RFC):在aRFC的基础上增加...

    ABAP子程序SUBMIT调用的方法

    这是一个ABAP子程序SUBMIT调用的方法,要根据实际灵活使用。

    ABAP RFC 开发 接口 多系统数据交换

    - **应用场景**: 在高并发的环境中,Queued RFC可以通过将请求排队来均衡负载,提高系统的整体性能。 - **处理流程**: Queued RFC首先将请求存储在一个队列中,然后按照顺序由远程系统依次处理这些请求。这种方式...

    ABAP接口-RFC C#项目

    当我们谈论"ABAP接口-RFC C#项目"时,我们关注的是如何在C#应用程序中调用SAP系统中的ABAP RFC函数。 在这样的项目中,首先需要理解的是如何在ABAP端创建RFC函数模块。RFC函数模块是可被外部系统调用的预定义程序,...

    SAP RFC基础知识

    5. **并行RFC (pRFC)**:优化了异步RFC的性能,仅限于同一系统内的调用。 #### 七、RFM(Remote Function Module) RFM是SAP RFC中的一个重要概念,用于定义远程功能模块。创建RFM时需要注意以下几点: 1. 参数...

    RFC开发实例分享.txt

    通过本文的学习,我们不仅了解了RFC的基本概念及其在SAP系统中的重要作用,还深入了解了如何在ABAP中实现RFC调用的具体方法。此外,我们也讨论了在实现过程中需要注意的安全性和性能优化问题,以及如何创建和维护RFC...

    Remote Function Calls in ABAP

    Remote Function Calls (RFC)在ABAP中是一种关键的技术,它允许不同系统间的SAP组件进行通信,例如在R/3系统、...通过这个SAPTEC培训课程,学员将获得深入理解RFC机制、实施和调试RFC调用以及优化RFC性能的技能。

    ABAP面试大全[归类].pdf

    涵盖了ABAP开发的多个方面,包括性能优化、ALV双击事件实现、HR模块逻辑数据库表、BADI和customer增强、Debug种类和方法、ALV OO用到的类、Table的使用、WebDynpro、OO继承、RFC异步调用、Webservice的发布与调用、...

    CALL RFC synchronize and asychronize Examples

    在SAP系统中,Remote Function Call (RFC)是一种通信机制,允许不同的系统间进行数据交换。RFC可以同步或异步执行,这两种...在SAP环境中,理解并灵活运用同步和异步RFC调用,对于优化系统资源和提升程序效率至关重要。

    SAP RFC数据库接口

    3. 监控和优化RFC调用,避免过多的网络延迟和资源占用。 总的来说,SAP RFC数据库接口通过SAP NCo库为.NET开发者提供了强大的工具,用于与SAP系统集成。它使得非SAP环境的应用程序也能方便地访问和操作SAP系统中的...

    sap RFC guid 指引

    在编写RFC调用时,需要注意的几个关键点包括: - 客户端(调用端)和服务器端(被调用端)的配置,确保双方能够正确地建立连接。 - 使用正确的RFC类型来满足业务需求,比如处理时间敏感的操作时使用tRFC。 - 在设计...

    ABAP Webservice接口部分-C#项目文件

    这个库支持ABAP RFC调用,可以直接在C#代码中使用,而无需通过SOAP层。 5. **C#调用ABAP Web服务流程**: - 初始化:创建一个代理类实例,通常由svcutil生成。 - 配置连接:设置必要的连接参数,如URL、凭据等。 ...

    SAP RFC通信模式详解

    SAP RFC 通信模式是 SAP 系统中的一种远程函数调用(Remote Function Call)机制,允许不同的 SAP 系统之间进行交互和数据交换。RFC 通信模式有多种,包括同步通信、异步通信、事务性通信和队列通信等。 一、同步...

    node-rfc:用于Node.js的异步,非阻塞SAP NW RFC SDK绑定

    使用一个或多个客户端的顺序和并行调用 NodeJS和ABAP数据类型之间的自动转换 直接和托管连接(连接池) 吞吐量监控:呼叫次数,发送/接收的字节数,应用程序/总时间; 需要SAP NWRFC SDK> = 7.53 内容 支持平台 ...

    Sap abap 学习课程

    2. **数据传输机制**:深入探讨了数据在不同系统间传输的多种方式,如IDOC(中间文档)、RFC(远程函数调用)、ALE(应用链接启用)、BAPI(业务API)等,并分析了各自的优缺点和适用场景。 3. **接口设计与编程**:...

    SAP XI 常用事务代码(sap basis).txt

    - **应用场景**: 解决RFC调用失败的问题时使用。 以上列举的事务代码涵盖了SAP XI环境中常见的管理和监控任务。熟练掌握这些事务代码能够显著提高SAP系统管理员的工作效率,并有助于确保系统的稳定运行。

    实战SAP程序开发——从实例学SAP.ABAP编程

    - RFC(Remote Function Call):学习如何通过RFC调用其他SAP系统或非SAP系统的函数。 - Gateway Service Builder (GW): 掌握SAP Gateway技术,实现与外部系统的集成。 10. 实战项目与调试: - 实战案例:通过...

    Asynchronous, non-blocking SAP NW RFC SDK bindings for Nod.zip

    标题中的"Asynchronous, non-blocking SAP NW RFC SDK bindings for Node"是指为Node.js开发的一个库,它提供了异步、非阻塞的方式与SAP ...通过利用Node.js的非阻塞I/O特性,它可以显著提升处理SAP RFC调用的性能。

    ABAP 各项技能

    - **RFC(Remote Function Call)**:允许远程调用其他系统中的功能模块。 ### 开发技巧与最佳实践 #### 1. 性能优化 - **避免嵌套循环**:尽可能减少不必要的循环结构,尤其是在处理大数据集时。 - **使用临时表*...

    abap三月通.pdf

    - **ALE/iDoc**:介绍了SAP系统之间的数据交换技术,包括异步通信和IDoc(Intermediate Document)的使用。 - **Report Painter**:一种用于创建复杂报表的设计工具,支持多种图表和图形元素。 - **Drilldown ...

Global site tag (gtag.js) - Google Analytics