sap多线程demo

示例程序

REPORT ztest_hj.

DATA:t1 TYPE i,
     t2 TYPE i,
     t3 TYPE i.
GET RUN TIME FIELD t1.

TYPES:BEGIN OF ty_matnr,
        matnr TYPE mara-matnr,
        mtart TYPE mara-mtart,
      END OF ty_matnr.
DATA:lt_out TYPE TABLE OF ty_matnr,
     ls_out TYPE ty_matnr.

*lt_out = VALUE #( ( matnr = '000000000000002020' )
*                  ( matnr = '000000000000090412' )
*                  ( matnr = '000000000000095271' ) ).

CLEAR:lt_out.
SELECT matnr mtart
  INTO TABLE lt_out UP TO 100 ROWS
  FROM mara.

DATA(lv_lines) = lines( lt_out ).
DATA:ls_mara TYPE mara,
     lt_mara TYPE TABLE OF mara.
DATA:lv_num TYPE i.

DATA:lv_index  TYPE sy-index,
     lv_taskid TYPE c LENGTH 8.

DO lv_lines TIMES.
  lv_index = sy-index.
  lv_taskid = 'Task' && lv_index.

  READ TABLE lt_out INTO ls_out INDEX sy-index.

  CALL FUNCTION 'ZFMMMTEST'
    STARTING NEW TASK lv_taskid
    PERFORMING frm_read_result ON END OF TASK
    EXPORTING
      iv_matnr = ls_out-matnr.

ENDDO.

"等待执行完之后的结果
WAIT UNTIL lv_lines = lv_num.

GET RUN TIME FIELD t2.

*WAIT UP TO 3 SECONDS.
IF lt_mara IS NOT INITIAL.
  WRITE: / 'Yes'.
ELSE.
  WRITE: / 'No'.
ENDIF.

t3 = t2 - t1.
WRITE: / '执行时间:',t3,'微秒'.

t3 = t3 / 100 / 10000.
WRITE: / '执行时间:',t3,'秒'.

FORM frm_read_result USING taskname.

  "获取返回的结果
  ADD 1 TO lv_num.
  RECEIVE RESULTS FROM FUNCTION 'ZFMMMTEST'
  IMPORTING
    ev_mara = ls_mara.

  APPEND ls_mara TO lt_mara.
  CLEAR ls_mara.

ENDFORM.

其中函数ZFMMMTEST

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值