[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.

扫描二维码关注公众号,回复: 1288071 查看本文章

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.

猜你喜欢

转载自klg.iteye.com/blog/328068
rfc