異步RFC調用實例

異步RFC:在異步RFC中,執行不依賴與RFC服務器是否可用。被調用的遠程功能啟動后,調用程序繼續運行,遠程功能和調用程序處理相互分離。遠程功能的結果可以延時接收。
RFC異步調用只能使用Tables、Exporting和Exceptions參數。調用程序不等待Function返回結果,不能直接從被調用的函數中返回結果,可以在後續的回調子程序中獲取結果。

PARAMETERS: plnum LIKE plaf-plnum.
DATA: l_return LIKE bapireturn1,
      l_header LIKE bapiplaf_e1,
      l_ca     LIKE bapi_kbko,
      l_ca1    LIKE bapi_kbko,
      l_ca2    LIKE bapi_kbko,
      l_com    LIKE TABLE OF bapi_pldordcomp_e1 WITH HEADER LINE,
      l_capa   LIKE TABLE OF bapi_pldordcapa_e1 WITH HEADER LINE,
      l_capa1  LIKE TABLE OF bapi_pldordcapa_e1 WITH HEADER LINE,
      l_capa2  LIKE TABLE OF bapi_pldordcapa_e1 WITH HEADER LINE.

CALL FUNCTION 'BAPI_PLANNEDORDER_GET_DETAIL'
  DESTINATION '目標系統'
  STARTING NEW TASK 'B1'//指明異步調用模式
  PERFORMING return ON END OF TASK//調用子程序接收返回結果
  EXPORTING
    plannedorder          = plnum.
IF sy-subrc = 0.
  write:/'Success call'.
ENDIF.
AT USER-COMMAND.
  IF sy-ucomm = 'OK'.
    WRITE:/ 'Header Info'.
    ULINE.
    WRITE:/ l_header-plannedorder_num,
            l_header-material,
            l_header-plan_plant,
            l_header-prod_plant ,
            l_header-order_type,
            l_header-total_plord_qty,
            l_header-order_start_date,
            l_header-order_fin_date.
    ULINE.
    WRITE:/ 'Companentsdata Info'.
    ULINE.
    LOOP AT l_com.
      WRITE:/ l_com-material.
    ENDLOOP.
  ENDIF.
FORM return USING taskname.
  RECEIVE RESULTS FROM FUNCTION 'BAPI_PLANNEDORDER_GET_DETAIL'
  keeping task//使已加載的遠程上下文保持至調用程序結束,直到遠程連接終止。
 IMPORTING
   return                    = l_return
   headerdata                = l_header
   capacityheaderdata1       = l_ca
   capacityheaderdata2       = l_ca1
   capacityheaderdata3       = l_ca2
 TABLES
   componentsdata            = l_com
   capacitydata1             = l_capa
   capacitydata2             = l_capa1
   capacitydata3             = l_capa2.
  SET USER-COMMAND 'OK'.
ENDFORM.

通常情況下,回調子程序不會自動運行,只有出現對話步驟或調用程序進入內存暫時掛起狀態時,才會觸發該子程序。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值