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.

  • 相关阅读:
    在openwrt上初体验PostgreSQL数据库
    Linux学习笔记(7)-系统资源查看
    Linux学习笔记(6)-工作管理
    Linux学习笔记(5)-进程管理
    Linux学习笔记(4)-文本编辑器vi的使用
    linux学习笔记(3)-文件系统
    Linux学习笔记(2)-用户和用户组
    linux学习笔记(1)-文件处理相关命令
    68.vivado与modelsim的关联以及器件库编译
    67.ARP协议
  • 原文地址:https://www.cnblogs.com/byfhd/p/772094.html
Copyright © 2011-2022 走看看