CALL RFC synchronize and asychronize Examples

本文提供了一个同步及异步RFC调用的例子,展示了如何通过ABAP编程实现远程函数模块的调用,包括参数传递、异常处理等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

同步调用RFC 示例
*&---------------------------------------------------------------------*
*& Report  sapbc415_rfcsync_s1                                         *
*&                                                                     *
*&---------------------------------------------------------------------*

REPORT SAPBC415_RFCSYNC_S1  MESSAGE-ID BC415.

TABLES SPFLI.

PARAMETERS: ICARR LIKE SFLIGHT-CARRID DEFAULT 'LH',
            ICONN LIKE SFLIGHT-CONNID DEFAULT '0400',
            DEST  LIKE RFCDES-RFCDEST DEFAULT 'NONE'.

DATA: SYSID LIKE SY-SYSID,
      MESS(80).

CALL FUNCTION 'BC415_RFC_READ_SPFLI'
    DESTINATION DEST
    EXPORTING
       CARRID   = ICARR
       CONNID   = ICONN
    IMPORTING
       EX_SPFLI = SPFLI
       SYS      = SYSID
    EXCEPTIONS
       INVALID_DATA          = 1
       COMMUNICATION_FAILURE = 2  MESSAGE MESS
       SYSTEM_FAILURE        = 3  MESSAGE MESS.

CASE SY-SUBRC.
  WHEN 1.
    WRITE: / TEXT-001.
    EXIT.
  WHEN 2.
    WRITE: / MESS.
    EXIT.
  WHEN 3.
    WRITE: / MESS.
    EXIT.
ENDCASE.

WRITE: / TEXT-004, SYSID COLOR 5.
SKIP.
WRITE: SPFLI-CARRID, SPFLI-CONNID, SPFLI-CITYFROM, SPFLI-CITYTO.

异步调用RFC示例
*&---------------------------------------------------------------------*
*&                                                                     *
*& Report  sapbc415_rfcasync_s1                                        *
*&                                                                     *
*&---------------------------------------------------------------------*

REPORT SAPBC415_RFCASYNC_S1  MESSAGE-ID BC415.

TABLES SPFLI.

PARAMETERS: ICARR LIKE SFLIGHT-CARRID DEFAULT 'LH',
            ICONN LIKE SFLIGHT-CONNID DEFAULT '0400',
            DEST  LIKE RFCDES-RFCDEST DEFAULT 'NONE'.

DATA: SYSID LIKE SY-SYSID,
      MESS(80),
      FLAG,
      RETCODE LIKE SY-SUBRC.

CALL FUNCTION 'BC415_RFC_READ_SPFLI'
   DESTINATION DEST
   STARTING NEW TASK 'T1'
   PERFORMING BACK ON END OF TASK
   EXPORTING
      CARRID  = ICARR
      CONNID  = ICONN
   EXCEPTIONS
      COMMUNICATION_FAILURE = 2  MESSAGE MESS
      SYSTEM_FAILURE        = 3  MESSAGE MESS.

CASE SY-SUBRC.
  WHEN 2.
    WRITE: / MESS.
    EXIT.
  WHEN 3.
    WRITE: / MESS.
    EXIT.
ENDCASE.

WAIT UNTIL  FLAG = 'X'.

CASE RETCODE.
  WHEN 0.
    WRITE: / TEXT-004, SYSID COLOR 5.
    SKIP.
    WRITE: SPFLI-CARRID, SPFLI-CONNID, SPFLI-CITYFROM, SPFLI-CITYTO.
  WHEN 1.
    WRITE: / TEXT-001, / TEXT-002.
  WHEN 2 OR 3.
    WRITE MESS.
ENDCASE.


*---------------------------------------------------------------------*
*       FORM BACK                                                     *
*---------------------------------------------------------------------*
*        -->  T                                                       *
*---------------------------------------------------------------------*
FORM BACK USING T.

  RECEIVE RESULTS FROM FUNCTION 'BC415_RFC_READ_SPFLI'
     IMPORTING
        EX_SPFLI  = SPFLI
        SYS       = SYSID
     EXCEPTIONS
        INVALID_DATA          = 1
        COMMUNICATION_FAILURE = 2  MESSAGE MESS
        SYSTEM_FAILURE        = 3  MESSAGE MESS.

  RETCODE = SY-SUBRC.

  FLAG = 'X'.

ENDFORM.

RFC函数原型
FUNCTION BC415_RFC_READ_SPFLI.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*"       IMPORTING
*"             VALUE(CARRID) LIKE  SFLIGHT-CARRID OPTIONAL
*"             VALUE(CONNID) LIKE  SFLIGHT-CONNID OPTIONAL
*"       EXPORTING
*"             VALUE(EX_SPFLI) LIKE  SPFLI STRUCTURE  SPFLI
*"             VALUE(SYS) LIKE  SY-SYSID
*"       EXCEPTIONS
*"              INVALID_DATA
*"----------------------------------------------------------------------
  SELECT SINGLE * FROM  SPFLI INTO SPFLI_WORKAREA
         WHERE  CARRID      = CARRID
         AND    CONNID      = CONNID.
  IF SY-SUBRC EQ 0.
    EX_SPFLI = SPFLI_WORKAREA.
  ELSE.
    MESSAGE E007 RAISING INVALID_DATA.
  ENDIF.
  SYS   = SY-SYSID.
ENDFUNCTION.
相关连接:http://blog.youkuaiyun.com/CompassButton/archive/2006/11/15/1385387.aspx

### Call Home 功能的 RFC 文档或标准 Call Home 功能虽然在 IT 系统中广泛应用,但其具体实现并未被正式标准化为独立的 RFC 文档。然而,某些与 Call Home 相关的功能和技术可以参考以下 RFC 和标准文档,这些文档描述了网络管理、远程监控和事件报告的相关协议和技术。 #### 1. SNMP(简单网络管理协议) SNMP 是一种广泛使用的网络管理协议,能够支持设备向管理站发送陷阱消息(Trap),这与 Call Home 的功能类似。通过 SNMP,设备可以主动报告异常状态或性能指标。 - **RFC 3411**:定义了 SNMP 架构,包括代理、管理站和信息模型之间的交互[^1]。 - **RFC 3416**:描述了 SNMPv3 的陷阱生成机制,允许设备向管理站发送异步通知[^2]。 ```python # 示例代码:使用 pysnmp 库发送 SNMP Trap from pysnmp.hlapi import * errorIndication, errorStatus, errorIndex, varBinds = next( sendNotification(SnmpEngine(), CommunityData('public'), UdpTransportTarget(('demo.snmplabs.com', 162)), ContextData(), 'trap', NotificationType(ObjectIdentity('1.3.6.1.4.1.20408.4.1.1.2'))) if errorIndication: print(errorIndication) ``` #### 2. Syslog(系统日志协议) Syslog 是另一种常用的日志记录和事件报告协议,能够将设备的日志消息发送到集中式日志服务器。这种机制也可以用于实现 Call Home 的部分功能。 - **RFC 5424**:定义了 Syslog 协议的结构和传输方式,支持设备以标准化格式发送日志消息[^3]。 #### 3. HTTP/HTTPS 接口 许多现代 Call Home 实现依赖于 HTTP 或 HTTPS 协议,通过 RESTful API 将事件数据发送到远程管理平台。 - **RFC 7230**:描述了 HTTP/1.1 协议的基础规范,包括请求和响应的格式[^4]。 - **RFC 9110**:进一步扩展了 HTTP 协议的标准,定义了更多的方法和状态码[^5]。 #### 4. Email 通知 部分 Call Home 系统通过 SMTP 协议发送电子邮件通知给管理员。 - **RFC 5321**:定义了 SMTP 协议的基本操作和消息传输规则[^6]。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值