SAP ABAP QRFC 使用,MQ,队列,实例

需求的来源

在SAP中经常有碰到队列的情况,比如发送队列(各个系统交互等等),而且这样的情况不在少数,当多个系统同时使用的时候便会导致系统卡死,用户体验差,那么这个时候就要应用到MQ。在开源社区中有Rabbit MQ,那么在SAP中有没有现成可以使用的技术和情况呢?答案是必然的不然本文也不会存在。就是QRFC(Queqe RFC)也称队列RFC。

快速上手

本文旨在十分钟让你懂得如何使用QRFC并将他应用到实际的生产生活。快速上手这项技能

1.创建队列并提交

REPORT ZVRZHENG034.

PARAMETERS:
  P_NUM TYPE I        DEFAULT 50,
  P_IN  TYPE TRFCQNAM DEFAULT 'YTEST01_IN',
  P_OUT TYPE TRFCQNAM DEFAULT 'YTEST01_OUT',
  P_RFC TYPE RFCDEST  DEFAULT 'NONE'.

START-OF-SELECTION.
  DO P_NUM TIMES.

    CALL FUNCTION 'TRFC_SET_QIN_PROPERTIES'
      EXPORTING
*       QOUT_NAME          = P_OUT
        QIN_NAME           = P_IN
      EXCEPTIONS
        INVALID_QUEUE_NAME = 1
        OTHERS             = 2.
    IF SY-SUBRC <> 0.
      MESSAGE E001(00) WITH 'TRFC_SET_QIN_PROPERTIES error'.
    ENDIF.

*    CALL FUNCTION 'ZVRZHENG_BGRFC'
    CALL FUNCTION 'ZGG'
      IN BACKGROUND TASK
      DESTINATION P_RFC
      AS SEPARATE UNIT
      EXPORTING
        I_VBELN = '110'.

  ENDDO.
  COMMIT WORK.
  IF SY-SUBRC <> 0.
    MESSAGE E001(00) WITH 'Commit error with return code:' SY-SUBRC.
  ENDIF.

2.执行队列


    CALL FUNCTION 'TRFC_QIN_ACTIVATE' STARTING NEW TASK 'ZVRZHENG'
      EXPORTING
        QNAME   = 'YTEST01_IN'"你要执行的队列
        MAXTIME = 3600."最大执行时间

3.监控执行情况 SMQ2

这是待执行状态

这是执行状态

那么截至到这里你已经能以队列的形式调用啦。

多队列并发

很多时候做队列的原因是资源安排的不合理,如果像快速上手中那样只创建一个,那和直接同步等待无异,作为一个合格的ABAPer要榨干CPU的每一丝能效,要节约每一个内存中的1和0。那怎么样在保证系统不卡死的情况下最大化使用CPU的性能,BASIS会给每个系统分一定程度的性能,推荐开的线程在5~8之间(符合大部分BASIS的习惯) 一般10个以下。

1.循环队列

循环队列是指从1到8,8 的下一个到1无限循环的队列。为了使我们的队列均匀的跑,使用循环队列来写入任务让每个队列的数量和运行时间大致相等,保证不会某个队列过于堵塞。具体体现在代码中是这样的。

  DATA LV_QIN TYPE TRFCQNAM.
  DO 100 TIMES.
    LV_QIN = SY-INDEX MOD 7 + 1."Loop时使用sy-tabix
    CONDENSE LV_QIN.
    LV_QIN = 'VRZHENGTEST' && LV_QIN.
    CALL FUNCTION 'TRFC_SET_QIN_PROPERTIES'
      EXPORTING
*       QOUT_NAME          = P_OUT
        QIN_NAME           = LV_QIN
      EXCEPTIONS
        INVALID_QUEUE_NAME = 1
        OTHERS             = 2.
    IF SY-SUBRC <> 0.
      MESSAGE E001(00) WITH 'TRFC_SET_QIN_PROPERTIES error'.
    ENDIF.

    CALL FUNCTION 'ZVRZHENG_BGRFC' IN BACKGROUND TASK DESTINATION 'NONE' AS SEPARATE UNIT.

  ENDDO.
 COMMIT WORK.

2.循环启用队列

循环启用队列,同时多条队列在跑动,并可以讲队列放置在闲置的应用部署中进行。即资源空闲的应用实例,可根据BASIS的设定设置,并且使用多线程的方式调用,挤干服务器的每一滴性能。

  DO 8 TIMES.
    LV_QIN = SY-INDEX MOD 7 + 1."Loop时使用sy-tabix
    CONDENSE LV_QIN.
    LV_QIN = 'VRZHENGTEST' && LV_QIN.
    CALL FUNCTION 'TRFC_QIN_ACTIVATE' STARTING NEW TASK LV_QIN
      EXPORTING
        QNAME   =  LV_QIN 
        MAXTIME = 7200."最大运行时间,最大可调整至9999
    IF SY-SUBRC <> 0.

    ENDIF.
  ENDDO.

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: SAP ABAP开发技术详解(实例篇)是一本SAP ABAP开发技术书籍的实例版本,旨在通过实例让读者更好地理解和掌握SAP ABAP开发技术。该书以实例为基础,详实阐述了SAP ABAP开发技术的各种知识点,包括ABAP程序语言ABAP开发工具、ABAP数据字典、ABAP界面编程、ABAP Web Dynpro等相关内容。 该书的实例设计非常实用,具有一定的参考价值。例如,作者通过案例讲解了如何使用SAP函数模块来实现特定的业务需求,如查询订单数据、创建销售订单、修改物料信息等;同时,还详细介绍了SAP ABAP开发工具的使用方法,包括ABAP工具、SAP代码调试器、断点调试等等。 此外,该书还深入解析了SAP ABAP数据字典的概念及其应用,如表格的创建、字段的添加、数据类型的定义等,特别是多种数据结构的应用和数据字典中的关键字等方面。此外,还介绍了采用Web Dynpro技术进行的图形化开发界面的构建过程,以及各种UI控件、Web Dynpro组件和SAP GUI控件等的应用及其聚合方法。 总之,《SAP ABAP开发技术详解(实例篇)》是一本非常实用的技术书籍,对于想要深入了解SAP ABAP开发技术的开发人员和SAP学习者来说是一本必读书籍。里面的实例都可以供读者参考,了解如何运用开发技术解决实际现场问题,是一本非常有价值的技术书籍。 ### 回答2: SAP ABAP开发技术详解(实例篇)PDF是一本介绍SAP ABAP编程语言的书籍。该书籍主要介绍了SAP ABAP开发应用程序的基本概念、技术、语言和实现方法,以及通过实例来展示如何应用这些概念和技术,来开发SAP应用。该书籍以实例为主线,目的是通过实践帮助读者更深入地理解SAP ABAP编程。 在书籍中,作者首先介绍了SAP ABAP语言的基础知识,包括数据类型、变量、常量、控制语句、函数模块、内表、工具、类和对象等。接着,作者通过实例演示了如何使用ABAP语言开发常用的SAP应用,例如SAP界面设计、SAP查询等。同时,作者还介绍了如何使用ABAP语言SAP系统进行交互,例如如何处理存储在SAP系统中的数据、如何使用SAP标准功能等。 通过该书籍,读者可以了解到SAP ABAP编程语言的基本原理和应用方法,具备开发SAP应用程序的基本能力。同时,该书籍以实例为主线,具有很强的实用性,对于SAP ABAP编程初学者和开发人员来说,是一本非常值得阅读的书籍。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值