zoukankan      html  css  js  c++  java
  • RFC 同步异步调用实例

    CALL RFC synchronize and asychronize Examples

    同步调用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.

  • 相关阅读:
    Windows Server 2003 NLB负载均衡(集群)配置详解
    SQL Server 数据库中关于死锁的分析
    SQL Server 性能调优(一)——从等待状态判断系统资源瓶颈
    RSync实现文件备份同步
    C# 中的委托和事件
    图解用WAS对Web服务器进行压力测试(was下载)
    Windows 之间用rsync同步数据(cwRsyncServer配置)
    SQLServer2005在复制功能中创建发布订阅
    【总结】C# 线程同步技术(一)之 Join 方法
    也来说说C#异步委托
  • 原文地址:https://www.cnblogs.com/byfhd/p/772094.html
Copyright © 2011-2022 走看看