`

异步RFC实例

 
阅读更多
   异步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
分享到:
评论

相关推荐

    RFC开发实例分享.txt

    ### ABAP中的RFC开发实例详解 #### 一、引言 在SAP系统中,远程函数调用(Remote Function Call, RFC)是一项重要的技术,它允许一个SAP系统调用另一个SAP系统的业务功能。本篇文章将从RFC的基础概念出发,深入...

    Flute协议的标准RFC3926

    该协议尤其适用于大规模可扩展的多播分发,其基础协议是异步分层编码(Asynchronous Layered Coding),并且FLUTE是设计用于在互联网上进行单向文件交付的协议。FLUTE协议特别适合在多播网络中使用,可以实现高效的...

    简单网络管理协议(SNMP) RFC1157文档

    - **4.1.6 TRAP-PDU**:用于向网络管理系统发送异步事件通知。 - **4.1.6.1 冷启动TRAP**:系统启动时发送。 - **4.1.6.2 温启动TRAP**:系统重新启动但未完全关闭时发送。 - **4.1.6.3 链路下降TRAP**:链路...

    Sap.net 连接使用实例

    在这个例子中,我们看到如何使用C#代码来实现SAP连接以及异步调用SAP RFC(远程功能调用)函数。 首先,我们来看`SAPConnect()`方法,这是建立SAP连接的关键部分。在这个方法中: 1. 检查是否存在代理对象`proxy`...

    rfc3265 中文

    在很多SIP服务中,都可能会有终端之间的协作,在这些情况下,要求异步的事件通知就显得相当有用。这样的服务包括了自动回叫服务(基于终端的状态事件),好友列表(基于用户的出席状态事件),消息等待通知(基于...

    bottom:基于异步的rfc2812兼容IRC客户端

    基于asyncio的与rfc2812兼容的IRC客户端(3.8+) 底部不是一个厨房水槽图书馆。 取而代之的是,它提供了一个具有较小表面积的一致的API,并针对性能和易于扩展进行了调整。 与bottle.py的路由样式类似,挂接到事件...

    SAP idoc 学习实例

    5. **接口设计**:学习IDoc还包括理解如何设计和配置端到端的接口,这涉及到选择正确的通信模式(同步/异步)、设置端点、定义传输协议等。 6. **TIDs(Transaction IDs)**:在IDoc交换过程中,TID用于跟踪和确认...

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

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

    LINUX环境下用C++实现SNMP网管协议

    此应用旨在加深对网络管理技术的理解,并熟悉相关RFC文件,特别是RFC1155(SMI,即结构和标识TCP/IP互联网的管理信息)、RFC1157(SNMP)和RFC1213(MIB-II)。项目借鉴了Carnegie Mellon University的SNMP软件作为...

    Email 邮件协议编程实例 源码 in vc

    - 邮件格式:遵循RFC标准,正确构造邮件头和邮件正文,以确保邮件的可读性和兼容性。 - 性能优化:如果需要处理大量邮件,考虑使用多线程或异步操作来提高效率。 总之,通过VC进行邮件协议编程,你需要对SMTP、POP3...

    SAPNCO3.0.x86_x64.rar

    3. 调用 RFC:通过 `SapFunction` 类实例化一个 RFC 函数,设置参数并执行。 4. 处理结果:获取 RFC 执行的结果,并在需要的地方进行处理。 使用 SAPNCO,开发者可以实现的功能包括但不限于: - 数据读取:从 SAP ...

    sapjco和sapidoc.rar

    4. **创建RFC调用**:实例化一个RFC功能对象,并根据RFC定义填充输入参数。 5. **执行RFC调用**:调用RFC功能对象的execute方法,执行SAP函数模块。 6. **处理结果**:获取并处理返回的输出参数和数据。 7. **关闭...

    C#实现WebSocket协议客户端和服务器websocket sharp组件实例解析

    WebSocket Sharp 是一个C#实现的WebSocket协议库,它支持客户端和服务端的功能,符合RFC 6455标准。这个组件不仅提供了基本的WebSocket连接管理,还包含了一些高级特性,如消息压缩、安全连接、HTTP身份验证、代理...

    SAP Java Jco2.1 10 64bit Windows 平台

    5. **调用 SAP 功能**:通过函数实例调用 SAP 的 RFC 或 BAPI,传递参数,执行业务逻辑。 6. **处理结果**:获取 RFC 调用的返回值,解析结果并进行后续处理。 7. **关闭连接**:完成操作后,记得关闭与 SAP 系统的...

    VB网络编程实例

    ◆ 21.htm 打开器并进入指定网址 ◆ 22.htm 打开一个直接到自己主页的器 ◆ 23.htm 得到用户的IP地址 ◆ 24.htm 电话拨号 ◆ 25.htm 电子邮件的标准格式 (RFC 822) ◆ 26.htm 断开...

    基于Java的实例源码-DNS服务器 Eagle DNS.zip

    5. **DNS协议**:Eagle DNS需要遵循DNS标准协议,如TCP/IP的RFC 1034和RFC 1035,理解这些协议对于分析源码至关重要。 6. **Java网络编程**:源代码中会涉及Socket编程,用于与客户端进行通信;可能还使用了NIO(非...

    sapjco3(WINx64).zip_SAP_sapjco3

    4. **调用RFC函数**:使用`JRfcFunction`对象实例化具体的RFC函数,设置输入参数,然后执行调用。执行结果可以通过输出参数获取。 5. **处理结果**:调用完成后,从返回的`JRfcFunction`对象中读取结果数据,并进行...

    SAP JCo官方文档

    4. **发送IDOC**:发送IDOC涉及到创建IDoc实例,填充数据,然后调用相应的RFC函数模块将其发送到SAP系统。这通常涉及创建一个JCoDestination对象,加载IDoc的结构定义,并使用JCoIDoc类的createDocument方法创建新的...

    PHP实例开发源码—k780 php邮件群发程序源码.zip

    4. **多线程或异步发送**:为了提高群发效率,源码可能会采用多线程或异步发送的方式,同时处理多个SMTP连接,但要注意控制并发量以避免被邮件服务商视为垃圾邮件。 5. **错误处理和日志记录**:邮件发送过程中可能...

    SAP JCo Release 3.1.0

    3. **调用RFC/BAPI**:通过Destination实例,可以创建RFC连接,进而调用RFC函数模块或BAPI方法。 4. **数据交换**:在调用中传递参数,获取返回结果,进行必要的数据转换。 5. **关闭连接**:完成操作后,记得关闭...

Global site tag (gtag.js) - Google Analytics