tRFC是用于事务性的 RFC 调用的 bgRFC 的前身。
属于真正的异步通信,当 RFC 客户端程序正在执行 tRFC 时,远程系统不需要可用。tRFC 组件将调用的 RFC 函数连同相应的数据一起存储在 SAP 系统的数据库中,同时生成一个唯一的事务标识符(TID)。
如果被调用系统不可用,会在之后继续调用,如果一定时间仍然不可用,则会变为批量运行。
如果接收系统在一定时间内没有变为活动状态,则调用将调度为批量运行
如果函数作为 逻辑工作单元(LUW) 执行,则始终使用 tRFC。在 LUW 中,所有调用都是
按照它们被调用的顺序执行。
在目标系统的同一程序上下文中执行
在单个事务中执行:它们作为一个单元提交或回滚。
RSARFCSE 对调用进行后台处理,会以设定的时间间隔自动运行(默认为每十五分钟一次,最多尝试 30 次,SMOD 增强SABP0000 和 SABP0003 可以自定义间隔及次数)
如果一定时间被调用系统不可用,会将状态CPICERR 写入 ARFCSDATA 表。在另一个指定时间(默认为八天)内,删除 ARFCSSTATE 表中的相应条目(也可以自定义此限制)
SM59 进入连接,菜单编辑 ->TRFC 选项可以设置任务的连接尝试次数以及重复尝试之间的时间
表 ARFCSSTATE 调用状态(输送)的描述
表 ARFCSDATA 调用数据
功能模块 ARFC_DEST_SHIP 将数据传输到目标系统
功能模块 ARFC_EXECUTE 执行存储的函数调用
功能模块 ARFC_DEST_CONFIRM 确认在目标系统中成功执行。最后,删除表ARFCSSTATE 和 ARFCSDATA 中的条目。
事务代码SM58 查看tRFC日志,并可对tRFC进行管理操作
表示功能模块在单独的上下文中执行,COMMIT 提交的每个功能模块都会注册一个单独的事务ID,如果没有添加该关键词,则一个事务ID下的功能模块如果多次调用,可以共同使用全局数据。
tRFC适用于在分布式环境中实现 LUW(一个典型的应用是 ALE)
在一个COMMIT WORK和下一个 COMMIT WORK之间发生的所有具有单一目的地的 tRFC 都 属于一个单一的逻辑工作单元 (LUW)。
一个逻辑单元在同一个上下文中执行
函数
CALL FUNCTION 'YLC_FUNC002' IN BACKGROUND TASK DESTINATION 'NONE'.
CALL FUNCTION 'YLC_FUNC002' IN BACKGROUND TASK DESTINATION 'NONE'.
CALL FUNCTION 'YLC_FUNC002' IN BACKGROUND TASK DESTINATION 'NONE'.
COMMIT WORK.
SM58查看记录
执行结果
注意点
以事务方式调用的功能模块不建议定义EXPORT 参数,因为调用程序中的 IMPORTING 参数会导致语法错误。
回调函数(DESTINATION 'BACK')不能以异步的形式调用
RFC服务器上的LUW的顺序不一定与RFC客户端中SAP LUW的顺序相对应,即提交时顺序和调用时的顺序不一定一致,如果要实现序列化的一致,需要使用qRFC。
EXECUTED |
相关LUW的执行在目标系统中完成。在删除此条目之前,系统会等待来自发送系统的内部 tRFC/qRFC 确认。 |
HOLD |
接收应用程序已部分处理此 LUW,并且不希望在发生后续网络或通信错误时重试( 如果大量条目具有此状态, 请参阅 SAP Note 366869 )。 |
WCONFIRM |
在 LUW 执行期间,应用程序已提示 tRFC/qRFC 管理器设置状态 HOLD。WCONFIRM 在 LUW 执行完成但尚未收到内部 tRFC/qRFC 确认时设置。 如果相关应用程序通知 tRFC/qRFC 管理器关于逻辑 LUW 端,则删除此条目( 有关详细信息, 请参阅 SAP Note 366869 ) |
https://blog.csdn.net/xiefireworks/article/details/126294452
qRFC 是 bgRFC type Q 的前身,qRFC 可以固定处理顺序。qRFC 背后的技术基于 tRFC。区别是在实际的 tRFC 调用之前通过执行功能模块TRFC_SET_QUEUE_NAME使用队列进行序列化。
使用qRFC调用时,相互依赖的功能模块被放置在发送系统的出站队列中。发送数据时, 对比tRFC,会保持准确的顺序。
如果目标系统为SAP系统,则具有入站队列。
qRFC 通过额外的排队机制得到增强,该机制将要发送或接收的 LUW 分别保存在 出站队列或入站队列中。这些 LUW 会按照它们保存的确切顺序发送或传输到接收器应用程序。
在 COMMIT WORK 时,将这些内部表的内容存入数据库(ARFCSSTATE 和 ARFCSDATA)。然后,RFC 管理器需要一个 DIALOG 工作流程来将此 LUW 发送到合作伙伴系统。
如果一个 qRFC 调用分配给多个出站队列,或者被分配到一个出站队列,但是相关的 LUW 发送到不同的目标系统,执行功能模块 TRFC_SET_QUEUE_RECEIVER_LIST.
调用RFC后调用函数模块 TRFC_SET_QIN_PROPERTIES添加到入站队列
RSTRFCEU 设置批处理作业,在后台定期执行删除任务来提高性能
LUW 依赖项和相关队列的所有数据都存储在 TRFCQOUT 表中。
SMQS:QOUT 出站调度程序管理
配置 QOUT Scheduler 的资源(指定用于将 LUW 发送到特定目标的工作进程数,控制资源消耗。)
注册、注销和排除目的地
为 RFC 目标指定登录数据
优化性能
显示管理数据
SMQR : 管理 QIN 入站调度程序
SMQ1:出站队列的 qRFC 监视器
检查队列状态
重新启动阻塞的队列
测试 qRFC 连接
SMQ2 - 入站队列的 qRFC 监视器。
如果出站队列中的第一个 LUW 由于连接错误( CPIC 错误)而无法处理,那么它不仅会被该队列阻塞,而且会阻塞在其中找到相关 LUW 的所有其他队列
tRFC 和 qRFC混合使用,如第一次调用是 tRFC 调用,需要执行功能模块 TRFC_QUEUE_INITIALIZE 初始化qRFC 管理器。
入站队列队列名称不得包含以下字符:*、&、% 或小写字母,不能以空格开头。
查看记录
RFC连接测试
程序:RSTRFCT0
本地执行qRFC
如果使用 DESTINATION SPACE,则功能模块可以在系统中的任何应用服务器上执行。
如果使用 DESTINATION NONE,函数模块将在执行 qRFC 调用的应用程序服务器上执行。
QIN 调度器被激活,会自动处理对应名称的队列,如果为* 则所有入站队列都由 QIN 调度程序自动处理。
ARETRY |
在 LUW 执行期间,应用程序已诊断出一个临时问题,并已通过特定的 qRFC 调用提示发送系统中的 qRFC 管理器,以根据事务 SM59 中的定义为重复调度批处理作业。 |
ANORETRY |
在 LUW 执行过程中,应用程序发现了一个严重错误,并通过特定的 qRFC 调用提示 qRFC Manager 取消对该 LUW 的处理。需要来自受影响应用程序的信息才能解决问题。要解决此问题,您需要在此处通知相关应用程序。 |
CPICERR |
在目标系统中传输或处理第一个 LUW 期间,发生网络或通信错误。当您双击此状态时,系统会显示错误文本。有关此错误的更多信息,请参阅系统日志 (SM21)、跟踪文件 dev_rd 或 dev_rfc*。根据所用目的地的事务 SM59 中的定义,调度批处理作业进行重新发送。尽管未发生通信错误,但状态 CPICERR 也可能存在于以下情况:qRFC 应用程序发现由于应用程序中的临时错误而无法进一步处理 LUW,因此调用 RESTART_OF_BACKGROUNDTASK 功能模块提示 qRFC Manager 取消执行此 LUW,并在以后根据事务 SM59 中的规范。在这种情况下,qRFC 使用文本“对 tRFC/qRFC 的命令:再次执行 LUW”模拟通信错误。如果此错误经常发生,您必须联系相应的应用程序。 |
EXECUTED |
此队列的第一个 LUW 已被处理。在处理进一步的 LUW 之前,系统会等待来自目标系统的 qRFC 内部确认。如果此状态的队列挂起超过 30 分钟,这可能意味着负责发送此 LUW 的工作进程已终止。对比状态RUNNING,这个当前的LUW肯定已经执行成功了。您可以毫无问题地重新激活此队列。qRFC Manager 会自动删除已经执行的 LUW 并发送下一个 LUW。 |
MODIFY |
由于正在修改 LUW 数据,因此该队列的处理被暂时锁定。 |
NOSEND |
此队列的 LUW 不发送,而是由特殊应用程序检索。 NOSEND队列仅在 SAP 内部用于组件 BW 或 CRM 与移动客户端之间的通信。即使相应应用程序(BW、CRM)已读取 LUW,此 NOSEND 状态也不会改变。此 LUW 仅在此应用程序确认收集后才从队列中删除(可以进行集体确认)。 在任何情况下都不应使用事务 SMQ1 重置此 NOSEND 状态并激活队列。 |
NOSENDS |
NOSEND 用于通过事务 SMQ1 调试 LUW 的执行。在 qRFC 调用期间,应用程序同时确定当前 LUW 不会立即发送。 |
READY |
队列已准备好传输和处理。 这种状态通常是暂时的。 但是,可能存在队列被手动锁定或由程序使用事务 SMQ1/SMQ2 锁定的数据状态,然后只能在 没有同时激活的情况下解锁。在这种情况下, 必须 显式激活此队列。 |
RUNNING |
当前正在处理此队列中的第一个 LUW。如果此状态的队列挂起超过 30 分钟,这可能意味着负责发送此 LUW 的工作进程已终止。如果是这种情况,您可以再次激活此队列。请注意,如果此时目标系统中仍在处理该 LUW,则激活处于 RUNNING 状态的队列可能会导致该 LUW 被执行多次。因此,我们建议您在重新激活队列之前至少等待 30 分钟。 |
STOP |
在此队列或通用队列(例如 BASIS_*)上明确设置了锁(SMQ1 或程序)。请注意,qRFC 的处理从不锁定队列。通知相应的应用程序后,您可以使用事务 SMQ1 解锁并激活此队列。 |
SYSFAIL |
执行此队列的第一个 LUW 时,目标系统发生严重错误。执行被中断。当您双击此状态时,系统会显示错误文本。有关此错误的更多信息,请参阅目标系统中的相应短转储 (ST22)。没有安排后台作业进行重试,并且不再处理队列。要解决此问题,您需要在此处通知相关应用程序。 |
WAITING |
该队列的第一个 LUW 对其他队列有依赖关系,并且这些队列中至少有一个当前还包含其他具有更高优先级的 LUW。 |
WAITSTOP |
该队列的第一个 LUW 对其他队列有依赖关系,并且这些队列中至少有一个当前仍处于锁定状态。 |
WAITUPDA |
如果在还包含一个或多个更新函数的事务中调用 qRFC,则设置此状态。由于此状态,LUW 和队列被阻塞,直到更新成功完成。 |
如果此状态花费的时间超过几分钟,请使用事务 SM13 检查更新或更新请求的状态。成功追溯更新后,会自动发送被阻止的 LUW。 |
|
您可以使用事务 SMQ1 或通过报告 RSTRFCK7 重置此状态,然后重新激活队列。请注意,由于重新激活,应用程序数据中的两个系统之间可能会出现不一致。 |
|
VBERROR |
如果与 LUW 相关的更新过程终止,则状态将从 WAITUPDA 更改为 VBERROR 。通过双击相关的错误文本,您可以分支到事务 SM13 以显示更新记录,并在必要时将其删除。 |
如果删除更新记录,则所有相关 LUW 也会被删除。 |
出站队列的 qRFC API
TRFC_GET_QUEUE_INFO 和 TRFC_GET_QUEUE_INFO_DETAILS
读取一个或所有出站队列的当前上下文。有关详细信息,请参阅示例程序 RSTRFCQR.
TRFC_QUEUE_INITIALIZE
通知 qRFC-Manager 您正在 LUW( 混合模式)中使用 tRFC 和 qRFC,并且第一个调用是 tRFC调用。
TRFC_QOUT_ACTIVATE
如果要指定队列名称(单个或通用,例如 基础测试_*) 和处理一个或多个队列的目的地。仅当队列由于通信或网络错误而阻塞,或者发生系统或应用程序异常并且问题已经解决时才使用此功能。
已停止的队列(通过调用函数 TRFC_QOUT_STOP) 不能用这个函数处理。
如果导入参数 力量更改为 ',qRFC Manager 重新发送 LUW,即使它处于状态 执行中. 此参数设置仅适用于系统程序。在正常情况下,您不需要此功能,因为 qRFC 管理器会自动尝试解决此类阻塞。另见程序 RSTRFCQ0.
TRFC_QOUT_DELETE_LUW
删除使用导入参数定义的出站队列中的 LUW TID.
TRFC_QOUT_DELETE_QUEUE
删除使用导入参数定义的整个队列 QNAME和 目的地.
TRFC_QOUT_GET_AND_PROCESS
从本地或远程 SAP 系统的出站队列中读取 qRFC LUW。
如果您使用 SINGLE_PROCESSING参数,如果在处理 LUW 时发生系统或应用程序异常, qRFC 管理器将向调用系统发送错误代码和错误消息。出站队列中所有成功处理的 LUW 都将被删除。有错误的 qRFC LUW 保留在出站队列中。
如果你不使用 SINGLE_PROCESSING参数,系统或应用程序异常会导致短转储,并且所有要读取的 LUW 都保留在出站队列中。它们可以在以后重新读取和处理。
TRFC_QOUT_GET_CURRENT_QUEUES
显示所有当前现有的队列。
TRFC_QOUT_GET_ERROR_QUEUES
显示由于以下错误消息之一而被阻止的所有错误队列: 系统故障, CPICERR, 重试, 阿雷特里, 异地恋.
具有状态的队列 等待不 显示。
TRFC_QOUT_GET_FIRST_LUW
显示队列中第一个 LUW 的信息(例如 TID)。
TRFC_QOUT_GET_HANGING_QUEUES
显示所有阻塞的队列,包括应用程序已 显式写入队列以供以后处理且状态为 WAITING 的队列。
TRFC_QOUT_OVERVIEW
您可以使用此功能模块概览存在的各种可选导入参数(例如队列名称、目标、SAP 客户端)的当前出站队列。
TRFC_QOUT_RESTART
如果要指定队列名称(单个或通用,例如 基础测试_*) 和一个目的地来继续处理一个或多个队列,而不管队列是否已经停止。
如果你改变 FORCE 导入参数到 SPACE, qRFC 管理器减少 STOP 计数器。如果计数器为 0,则激活队列。否则,qRFC 管理器总是激活队列而不管 STOP 计数器。
如果队列被阻塞,请使用上述调用而 不是 TRFC_QOUT_ACTIVATE.
如果设置导入参数 NO_ACTIVATE到 '‘,qRFC 管理器解锁队列,但不激活它。另见程序 RSTRFCQ3..
TRFC_QOUT_RESTART_COND
如果要指定队列名称、高优先级队列名称或重新启动一个或多个队列(单个或通用,例如 基础测试_*)。
如果更改导入参数 TILL_STOP至 SPACE,一旦这个高优先级队列为空,qRFC 管理器就会重新启动队列。否则,该队列一旦停止或为空就会重新启动。
如果没有其他 STOP 呼叫已安排,使用调用此函数 TILL_STOP = 空间通话时自动结束队列。见程序 RSTRFCQ4(till_stop = 空间)和 RSTRFCQA(直到停止='X')。
TRFC_QOUT_STATE
当您输入队列名称、目标和可选的 SAP 客户端时,您可以使用此功能模块来显示队列的状态。
处于状态 CPICERR,队列的自动重复取决于SM59中目的地的配置(默认设置为是)。
如果队列有状态 WAITSTOP 或者 WAITING,导出参数 WQNAME 显示当前队列在处理之前正在等待哪个队列。
状态 NOSEND 和 NOSENDS之间的区别是一个有状态的队列NOSENDS可以使用 SMQ1 或相应的功能模块激 活和重新启动。有状态的队列 NOSEND只能使用其他系统或程序读取。见程序 RSTRFCQ2.
TRFC_QOUT_STOP
在您指定队列名称(例如,单个或通用名称)时停止处理一个或多个队列 基础测试_*) 和目的地。
如果导入参数FORCE改为 SPACE, qRFC Manager 只处理队列中存在的 LUW 停止时间。否则,qRFC 管理器会立即停止处理事务。
STOP 计数器计数STOP队列的数量 。
您还可以停止一个空的(不存在的)队列。在这种情况下,分配给此 LUW 的所有 LUW 都存储在队列中。另见程序 RSTRFCQ1.
TRFC_SET_BACKGROUND_SEQUENCE
确定已从事务中的对话任务和更新任务调用的 qRFC LUW 的处理顺序。
TRFC_SET_QUEUE_NAME
将队列名称传输到 qRFC 管理器。此队列名称对下一个有效 调用函数...在后台任务中。.
如果导入参数 NOSEND 已设置为“X”或“S”,则 qRFC 管理器不会在提交工作时间发送 LUW,而是将其保存在 qRFC 表中。
'S':此 LUW 可以从 SMQ1(或其他功能模块)重新启动。
'X':'X':这个LUW只能被一个应用程序处理。无法使用 QOUT 调度程序对其进行处理。
此参数适用于整个 LUW。
TRFC_SET_QUEUE_NAME_LIST
将队列名称传输到 qRFC 管理器,如果Call Function ... In Background中被分配到多个发送队列。您可以将此功能模块与 TRFC_SET_QUEUE_NAME在一个 LUW 中。
如果导入参数 NOSEND 已设置为“X”或“S”,qRFC 管理器不会在 提交工作时间,但将其保存在 qRFC 表中。
'S':此 LUW 可以从 SMQ1(或其他功能模块)重新启动。
'X':'X':这个LUW只能被一个应用程序处理。无法使用 QOUT 调度程序对其进行处理。
此参数适用于整个 LUW。
TRFC_SET_QUEUE_RECEIVER_LIST
如果函数被调用,则将队列名称传输到 qRFC 管理器 Call Function ... In Background 中将在不同的目标系统中进行处理。qRFC 管理器仅在数据库中存储此 qRFC 的所有数据一次。
您还需要设置选项 作为独立单位和 目的地作为此函数的导入参数。
如果导入参数 诺森德已设置为“X”或“S”,qRFC 管理器不会在提交工作时间发送 LUW,而是将其保存在 qRFC 表中。
'S':此 LUW 可以从 SMQ1(或其他功能模块)重新启动。
'X':'X':这个LUW只能被一个应用程序处理。无法使用 QOUT 调度程序对其进行处理。
此参数适用于整个 LUW。
TRFC_GET_QIN_INFO 和 TRFC_GET_QIN_INFO_DETAILS
显示一个或所有入站队列的当前内容。见程序 RSTRFCIR.
TRFC_QIN_GET_CURRENT_PARAM
获取有关入站队列的以下信息:当前 LUW 的队列名称和队列计数器分配。如果 在入站队列中使用 qRFC 中 的 Re-use 功能,则需要此信息。
TRFC_QIN_ACTIVATE
如果要指定队列名称(单个或通用,例如 基础测试_*) 和处理一个或多个队列的目的地。仅当队列由于通信错误而阻塞,或者发生系统或应用程序异常且问题已解决时,才应使用此功能。如果 LUW 已保存在入站队列中并且需要重新激活,您也可以使用它。
被调用函数阻塞的队列 TRFC_QIN_STOP 无法使用此功能进行处理。
如果设置导入参数 MAXLUW值不等于 0,qRFC 管理器激活入站队列中的所有 LUW。
如果设置导入参数 最大时间到不等于 0 的值(0 = 队列为空时立即返回调用),qRFC 管理器仅在指定时间内激活队列。如果在处理最后一个 LUW 时超时,则在最后一个 LUW 之后返回此调用。
如果更改导入参数MODE 对于 B,qRFC 管理器在后台任务中激活队列(执行 qRFC LUW)。导入参数对于启动此后台作业是可选的(默认情况下)。 立即)。
如果更改导入参数MODE 对于“L”,qRFC 管理器在调用者上下文中处理队列中的所有 qRFC LUW。如果此队列中的功能模块发生异常,则会导致短转储,因为 qRFC Manager 无法检测此会话中的异常。
如果设置导入参数 USERDEST 到 SM59 中的“本地”RFC 目标(例如,以 NONE 或 SPACE 作为参考目标的逻辑目标),qRFC 管理器处理当前登录用户下的队列中的所有 qRFC LUW。如果未输入目的地,或未定义用户,则使用当前用户。见程序 RSTRFCI0.
TRFC_QIN_DELETE_LUW
删除入站队列(由导入参数 TID 定义)中的 LUW。
TRFC_QIN_DELETE_QUEUE
删除导入参数定义的整个入站队列 QNAME.
TRFC_QIN_GET_CURRENT_QUEUES
显示所有当前现有的队列。
TRFC_QIN_GET_ERROR_QUEUES
显示由于以下状态设置之一而被阻止的所有错误队列: SYSFAIL,CPICERR, RETRY,ARETRY,ANORETRY.
具有状态 WAITING 的队列 不 显示。
TRFC_QIN_GET_FIRST_LUW
显示队列中第一个 LUW 的信息(例如 TID)。
TRFC_QIN_GET_HANGING_QUEUES
该函数显示所有被阻塞的队列,包括应用程序已 显式写入队列以供以后处理并具有状态WAITING 的队列.
此功能显示 所有具有状态WAITING的队列. 要查看有错误的队列 ,请使用功能模块 TRFC_QIN_GET_ERROR_QUEUES.
TRFC_QIN_OVERVIEW
获取当前入站队列的概览。这些可以有各种可选的导入参数,例如,队列名称或 SAP 客户端。
TRFC_QIN_RESTART
如果要指定队列名称(单个或通用,例如 基础测试_*) 继续处理一个或多个队列,无论这些队列之前 是否已停止。
如果更改导入参数 FORCE 为 SPACE,qRFC 管理器减少 STOP 计数器,如果计数器为 0,则激活队列。否则,无论 STOP 计数器的状态如何,qRFC 管理器都将始终激活队列。
如果设置导入参数 MAXLUW值不等于 0,qRFC 管理器激活入站队列中的所有 LUW。
如果队列已停止,请使用此调用而 不是 TRFC_QIN_ACTIVATE。.
如果更改导入参数 NO_ACTIVATE 到“X”时,qRFC 管理器解锁队列,但不激活它。
如果设置导入参数 MAXTIME 到不等于 0 的值(0 = 队列为空时立即返回调用),qRFC 管理器仅在此时间内激活队列。如果在处理最后一个 LUW 时时间用完,则在处理完最后一个 LUW 后立即返回此调用。
如果设置导入参数 MODE 对于“B”,qRFC 管理器激活队列并在后台作业中处理 qRFC LUW。导入参数对于启动此后台作业是可选的(默认值:立即)。 立即)。
如果更改导入参数 MODE 对于“L”,qRFC 管理器在调用者上下文中处理队列中的所有 qRFC LUW。如果此队列中的功能模块发生异常,则会导致短转储,因为 qRFC Manager 无法检测此会话中的异常。
如果设置导入参数 USERDEST 到事务 SM59 中的“本地”RFC 目标(例如,以 NONE 或 SPACE 作为参考目标的逻辑目标),qRFC 管理器处理当前登录用户下的队列中的所有 qRFC LUW。如果没有输入目的地,或者没有定义用户,则使用当前用户。参考程序RSTRFCI3.
TRFC_QIN_RESTART_COND
如果您指定队列名称或高优先级队列名称(单个或通用,例如 基础测试_*) 用于重新启动一个或多个队列。
如果更改导入参数 TILL_STOP至 SPACE,一旦这个高优先级队列为空,qRFC 管理器就会重新启动队列。否则,该队列一旦停止或为空就会重新启动。
如果没有其他 停止呼叫已安排,使用调用此函数 TILL_STOP = 空间通话时自动结束队列。
参考程序RSTRFCI4.
TRFC_QIN_SAVE_CURRENT_LUW
在功能模块执行期间通知 qRFC 管理器,当前 LUW 在成功执行后将被保存(以供重复使用)。
TRFC_QIN_STATE
如果您指定队列名称和(可选)SAP 客户端,则使用此功能模块显示此队列的状态。
队列具有以下可能的状态显示: READY, CPICERR, SYSFAIL, STOP, WAITSTOP, and WAITING.
状态 SYSFAIL 由严重的系统错误导致,并且是由目标系统中正在处理当前 LUW 时的系统异常或应用 程序异常引起的。在这种情况下,队列被阻塞,无法自动重启。您可以使用该程序 RSTRFCI0重新激活 LUW,或使用程序 RSTRFCID删除 qRFC LUW。
处于状态 CPICERR,也没有自动重试。仅当本地应用程序服务器上的网关出现故障时,才会出现此错误。利用 RSTRFCI0解决网关问题后重新启动队列。
如果队列有状态 WAITSTOP 或者 WAITING, 导出参数 名称显示当前队列在处理之前正在等待哪个队列。参考程序RSTRFCI2.
TRFC_QIN_STOP
如果您指定队列名称以停止处理一个或多个队列(例如,单个或通用队列),则使用此函数 基础测试_*)。
如果导入参数 FORCE 改为 SPACE , qRFC Manager 只处理队列中存在的 LUW 停止时间。否则,qRFC 管理器会立即停止处理。
STOP 计数器计数STOP调用。
您还可以停止一个空的(不存在的)队列。在这种情况下,分配给此队列的所有 LUW 都保存在 qRFC 表中。见程序 RSTRFCI1.
TRFC_QINS_DELETE_LUW
在存储的入站队列中删除使用导入参数 TID 定义的 LUW。
TRFC_QINS_DELETE_QUEUE
删除导入参数定义的整个入站队列 QNAME.
TRFC_QINS_ERASE
删除使用导入参数定义的部分或全部 LUW QNAME和 FROM_COUNT哪些是得救的。
TRFC_QINS_OVERVIEW
获取当前保存的入站队列的概览。
TRFC_QINS_RESTORE
删除使用导入参数定义的部分或全部 LUW QNAME和 FROM_COUNT哪些是得救的。
TRFC_RECEIVER_INFO
从 tRFC 或 qRFC LUW 的发送方获取信息,例如 TID、客户端、用户、应用程序服务器的主机名、程序名称和事务代码。您还可以使用此功能模块来确定功能模块是否已通过入站队列的 tRFC 或 qRFC 发送。
TRFC_SET_QIN_PROPERTIES
将出站队列名称、入站队列名称和(可选)队列计数器传输到 qRFC 管理器。这些参数仅对后台任务中的下一个调用函数有效。出站队列和入站队列可以具有相同的队列名称。见程序 RSTRFCT5
1. 具有队列依赖关系使用qRFC,无队列依赖关系使用tRFC
2. 根据官方建议使用bgRFC type T/bgRFC type Q来代替tRFC和qRFC的使用
3. 对于两个 SAP 系统之间的 tRFC 和 qRFC 调用:函数组 ERFC 和 ARFC
4. 另外对于外部(非 SAP)系统中的所有 RFC 调用:功能组 SYST。
ABAP调试