ABAP QRFC 队列函数的使用
一、队列函数(QRFC)
队列RFC(queued Remote Function Call,qRFC)是tRFC的一个扩展。它允许你将多个tRFC调用序列化为一个队列。qRFC调用会首先被函数模块TRFC_SET_QUEUE_NAME进行序列化处理,然后这些调用被一个tRFC进行实际上的dispatch。qRFC可以作为外向队列(由调用系统序列化)处理,或者是内向队列(由被调用系统序列化)。
说人话:让你的后台函数(就是带IN BACKGROUND TASK),形成一个队列,函数会按顺序执行,上一个执行完毕,再执行后一个。
二、源代码
DATA:zq_name TYPE trfcqnam .DO 10 TIMES.zq_name = 'ZMYQRFC'."队列名字,拜托你自己取一下好嘛CALL FUNCTION 'TRFC_SET_QUEUE_NAME'EXPORTINGqname = zq_nameEXCEPTIONSinvalid_queue_name = 1OTHERS = 2.IF sy-subrc <> 0.ENDIF."Z打头的函数,换成你自己要执行的函数CALL FUNCTION 'ZFM_LIMF_TEST_QRFC' IN BACKGROUND TASKDESTINATION 'NONE'AS SEPARATE UNITEXPORTINGin_input = '1'.
ENDDO.COMMIT WORK AND WAIT."注意点,这一句可以写在自定义程序中,但是不要写在增强中,一般标准程序中,有自己的commit work.
三、查看队列SMQ1
注意点:队列是有个状态的,一般按我的代码执行,不debuge就是running(运行状态)。但是进入debug就是会变成ready(准备)状态,不想丢数据就需要你手动激活一下,才能启动执行。当然也有函数(TRFC_QIN_ACTIVATE或者TRFC_QOUT_ACTIVATE)可以激活这个。另外队列函数分为出站和入站,详细解释你另外搜搜
好了,今日分享到这。
分享使我快乐,我是寒武青锋。