异步RFC不等调用的RFM返回就往下执行,用STARTING NEW TASK TASKNAME启动,
调用时不能指定IMPORT输出参数,在RFM内部不能抛出除SYSTEM_FAILURE和COMMUNICATION_FAILURE以外的其他异常,可以用PERFORMING FORMNAME ON END OF TASK 指定用于回调的FORM,在回调FORM里面用RECEVING RESULTS FROM FUNCTION rfc_name,还有如果是被调用的函数里面出现dialog,则在调用系统中出现的新的会话,所以如果调用系统的会话数超过6个就会触发SYSTEM_FAILURE异常。
实例:RFM如下:
FUNCTION ZRFC_USER_READ.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" VALUE(USER_NAME) TYPE XUBNAME
*" EXPORTING
*" VALUE(USER_ADDR) TYPE USR03
*" VALUE(SYSTEM_ID) TYPE SYSYSID
*" TABLES
*" USER_PARA STRUCTURE USR05
*"----------------------------------------------------------------------
SELECT SINGLE * INTO USER_ADDR FROM USR03
WHERE BNAME = USER_NAME.
SELECT * INTO TABLE USER_PARA FROM USR05
WHERE BNAME = USER_NAME.
SYSTEM_ID = SY-SYSID.
ENDFUNCTION.
测试程序,调用异步RFC
*&---------------------------------------------------------------------*
*& Report ZTCXHTEST_GETRESULT_RETURN
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZTCXHTEST_GETRESULT_RETURN.
DATA: user_addr TYPE user_addr,
system_id TYPE sysysid,
user_para LIKE TABLE OF usr05 WITH HEADER LINE,
msg_text(128).
CALL FUNCTION 'ZRFC_USER_READ'
"DESTINATION 'lhlinux_DEV_00'
STARTING NEW TASK 'B1'
PERFORMING return_user ON END OF TASK
EXPORTING
user_name = 'CXH'
EXCEPTIONS
communication_failure = 1 MESSAGE msg_text
system_failure = 2 MESSAGE msg_text.
IF sy-subrc = 0.
WRITE: 'Wait for reply.'.
ELSE.
WRITE msg_text.
ENDIF.
* Varify the FORM routine RETURN_USER is not called yet
IF user_para IS INITIAL.
WRITE:/ 'Destination not ready yet.'.
ELSE.
WRITE:/ 'Destination is reached.'.
ENDIF.
AT USER-COMMAND.
* Return from FORM routine RETURN_USER via SET USER-COMMAND
IF sy-ucomm = 'OKCD'.
IF msg_text = space.
WRITE: / 'Destination system', system_id.
LOOP AT user_para.
WRITE:/ user_para-bname,
user_para-parid,
user_para-parva.
ENDLOOP.
ELSE.
WRITE msg_text.
ENDIF.
ENDIF.
*&---------------------------------------------------------------------*
*& Form RETURN_USER
*&---------------------------------------------------------------------*
FORM return_user USING taskname.
RECEIVE RESULTS FROM FUNCTION 'ZRFC_USER_READ'
IMPORTING
user_addr = user_addr
system_id = system_id
TABLES
user_para = user_para
EXCEPTIONS
communication_failure = 1 MESSAGE msg_text
system_failure = 2 MESSAGE msg_text.
SET USER-COMMAND 'OKCD'.
ENDFORM. "return_info
分享到:
相关推荐
### ABAP中的RFC开发实例详解 #### 一、引言 在SAP系统中,远程函数调用(Remote Function Call, RFC)是一项重要的技术,它允许一个SAP系统调用另一个SAP系统的业务功能。本篇文章将从RFC的基础概念出发,深入...
该协议尤其适用于大规模可扩展的多播分发,其基础协议是异步分层编码(Asynchronous Layered Coding),并且FLUTE是设计用于在互联网上进行单向文件交付的协议。FLUTE协议特别适合在多播网络中使用,可以实现高效的...
- **4.1.6 TRAP-PDU**:用于向网络管理系统发送异步事件通知。 - **4.1.6.1 冷启动TRAP**:系统启动时发送。 - **4.1.6.2 温启动TRAP**:系统重新启动但未完全关闭时发送。 - **4.1.6.3 链路下降TRAP**:链路...
在这个例子中,我们看到如何使用C#代码来实现SAP连接以及异步调用SAP RFC(远程功能调用)函数。 首先,我们来看`SAPConnect()`方法,这是建立SAP连接的关键部分。在这个方法中: 1. 检查是否存在代理对象`proxy`...
在很多SIP服务中,都可能会有终端之间的协作,在这些情况下,要求异步的事件通知就显得相当有用。这样的服务包括了自动回叫服务(基于终端的状态事件),好友列表(基于用户的出席状态事件),消息等待通知(基于...
基于asyncio的与rfc2812兼容的IRC客户端(3.8+) 底部不是一个厨房水槽图书馆。 取而代之的是,它提供了一个具有较小表面积的一致的API,并针对性能和易于扩展进行了调整。 与bottle.py的路由样式类似,挂接到事件...
5. **接口设计**:学习IDoc还包括理解如何设计和配置端到端的接口,这涉及到选择正确的通信模式(同步/异步)、设置端点、定义传输协议等。 6. **TIDs(Transaction IDs)**:在IDoc交换过程中,TID用于跟踪和确认...
- RFC(Remote Function Call):学习如何通过RFC调用其他SAP系统或非SAP系统的函数。 - Gateway Service Builder (GW): 掌握SAP Gateway技术,实现与外部系统的集成。 10. 实战项目与调试: - 实战案例:通过...
此应用旨在加深对网络管理技术的理解,并熟悉相关RFC文件,特别是RFC1155(SMI,即结构和标识TCP/IP互联网的管理信息)、RFC1157(SNMP)和RFC1213(MIB-II)。项目借鉴了Carnegie Mellon University的SNMP软件作为...
- 邮件格式:遵循RFC标准,正确构造邮件头和邮件正文,以确保邮件的可读性和兼容性。 - 性能优化:如果需要处理大量邮件,考虑使用多线程或异步操作来提高效率。 总之,通过VC进行邮件协议编程,你需要对SMTP、POP3...
3. 调用 RFC:通过 `SapFunction` 类实例化一个 RFC 函数,设置参数并执行。 4. 处理结果:获取 RFC 执行的结果,并在需要的地方进行处理。 使用 SAPNCO,开发者可以实现的功能包括但不限于: - 数据读取:从 SAP ...
4. **创建RFC调用**:实例化一个RFC功能对象,并根据RFC定义填充输入参数。 5. **执行RFC调用**:调用RFC功能对象的execute方法,执行SAP函数模块。 6. **处理结果**:获取并处理返回的输出参数和数据。 7. **关闭...
WebSocket Sharp 是一个C#实现的WebSocket协议库,它支持客户端和服务端的功能,符合RFC 6455标准。这个组件不仅提供了基本的WebSocket连接管理,还包含了一些高级特性,如消息压缩、安全连接、HTTP身份验证、代理...
5. **调用 SAP 功能**:通过函数实例调用 SAP 的 RFC 或 BAPI,传递参数,执行业务逻辑。 6. **处理结果**:获取 RFC 调用的返回值,解析结果并进行后续处理。 7. **关闭连接**:完成操作后,记得关闭与 SAP 系统的...
◆ 21.htm 打开器并进入指定网址 ◆ 22.htm 打开一个直接到自己主页的器 ◆ 23.htm 得到用户的IP地址 ◆ 24.htm 电话拨号 ◆ 25.htm 电子邮件的标准格式 (RFC 822) ◆ 26.htm 断开...
5. **DNS协议**:Eagle DNS需要遵循DNS标准协议,如TCP/IP的RFC 1034和RFC 1035,理解这些协议对于分析源码至关重要。 6. **Java网络编程**:源代码中会涉及Socket编程,用于与客户端进行通信;可能还使用了NIO(非...
4. **调用RFC函数**:使用`JRfcFunction`对象实例化具体的RFC函数,设置输入参数,然后执行调用。执行结果可以通过输出参数获取。 5. **处理结果**:调用完成后,从返回的`JRfcFunction`对象中读取结果数据,并进行...
4. **发送IDOC**:发送IDOC涉及到创建IDoc实例,填充数据,然后调用相应的RFC函数模块将其发送到SAP系统。这通常涉及创建一个JCoDestination对象,加载IDoc的结构定义,并使用JCoIDoc类的createDocument方法创建新的...
4. **多线程或异步发送**:为了提高群发效率,源码可能会采用多线程或异步发送的方式,同时处理多个SMTP连接,但要注意控制并发量以避免被邮件服务商视为垃圾邮件。 5. **错误处理和日志记录**:邮件发送过程中可能...
3. **调用RFC/BAPI**:通过Destination实例,可以创建RFC连接,进而调用RFC函数模块或BAPI方法。 4. **数据交换**:在调用中传递参数,获取返回结果,进行必要的数据转换。 5. **关闭连接**:完成操作后,记得关闭...