[ABAP]RFC 帮组文档上的例子(abenrfc_example)

 

*&---------------------------------------------------------------------*

*& Report  ZKLJ_0004

*&---------------------------------------------------------------------*

REPORT  ZKLJ_0004.

 

TYPES:

  BEGIN OF TASK_TYPE,

    NAME TYPE STRING,

    DEST TYPE STRING,

  END OF TASK_TYPE.

 

DATA:

  SND_JOBS TYPE I,

  RCV_JOBS TYPE I,

  EXC_FLAG TYPE I,

  INFO     TYPE RFCSI,

  MESS     TYPE C LENGTH 80,

  INDX     TYPE C LENGTH 4,

  NAME     TYPE C LENGTH 8,

  TASK_LIST TYPE STANDARD TABLE OF TASK_TYPE,

  TASK_WA   TYPE TASK_TYPE.

 

DO 10 TIMES.

 

  INDX = SY-INDEX.

  CONCATENATE 'Task' INDX INTO NAME.

 

  CALL FUNCTION 'RFC_SYSTEM_INFO'

    STARTING NEW TASK NAME

    DESTINATION IN GROUP DEFAULT

    PERFORMING RFC_INFO ON END OF TASK

    EXCEPTIONS

      SYSTEM_FAILURE        = 1 MESSAGE MESS

      COMMUNICATION_FAILURE = 2  MESS

      RESOURCE_FAILURE      = 3.

 

  CASE SY-SUBRC.

    WHEN 0.

      SND_JOBS = SND_JOBS + 1.

    WHEN 1 OR 2.

      MESSAGE MESS TYPE 'I'.

    WHEN 3.

      IF SND_JOBS >= 1 AND EXC_FLAG = 0.

        EXC_FLAG = 1.

        WAIT UNTIL RCV_JOBS >= SND_JOBS UP TO 5 SECONDS.

      ENDIF.

      IF SY-SUBRC = 0.

        EXC_FLAG = 0.

      ELSE.

        MESSAGE 'Resource failure' TYPE 'I'.

      ENDIF.

    WHEN OTHERS.

      MESSAGE 'Other error' TYPE 'I'.

  ENDCASE.

 

ENDDO.

 

WAIT UNTIL RCV_JOBS >= SND_JOBS.

LOOP AT TASK_LIST INTO TASK_WA.

  WRITE: / TASK_WA-NAME, TASK_WA-DEST.

ENDLOOP.

 

FORM RFC_INFO USING NAME.

  TASK_WA-NAME = NAME.

  RCV_JOBS = RCV_JOBS + 1.

  RECEIVE RESULTS FROM FUNCTION 'RFC_SYSTEM_INFO'

    IMPORTING

      RFCSI_EXPROT          = INFO

    EXCEPTIONS

      SYSTEM_FAILURE        = 1 MESSAGE MESS

      COMMUNICATION_FAILURE = 2 MESSAGE MESS.

 

  IF SY-SUBRC = 0.

    TASK_WA-DEST = INFO-RFCDEST.

  ELSE.

    TASK_WA-DEST = MESS.

  ENDIF.

 

  APPEND TASK_WA TO TASK_LIST.

 

ENDFORM.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值