ABAP 实现多线程(二)

第一步:初始化server group ,server group 可以用RZ12进行维护,参数直接复制即可,不要修改。
CONSTANTS: serv_group LIKE rzllitab-classname VALUE ‘JOBRUN’.

CALL FUNCTION ‘SPBT_INITIALIZE’
EXPORTING
group_name = serv_group

  • IMPORTING
    
  •   MAX_PBT_WPS                          =
    
  •   FREE_PBT_WPS                         =
    

    EXCEPTIONS
    invalid_group_name = 1
    internal_error = 2
    pbt_env_already_initialized = 3
    currently_no_resources_avail = 4
    no_pbt_resources_found = 5
    cant_init_different_pbt_groups = 6
    OTHERS = 7
    .
    第二步:分别写多个FM的调用,注意:如果多个FM都共用的参数,数据写在主程序中,然后用参数传到FM里。
    CALL FUNCTION ‘Z_BAPI_FM1’
    STARTING NEW TASK ‘FM1TASK’ DESTINATION IN GROUP serv_group
    PERFORMING sub_fm1_back ON END OF TASK
    TABLES
    date_ra = date_ra.
    CALL FUNCTION ‘Z_BAPI_FM2’
    STARTING NEW TASK ‘FM2TASK’ DESTINATION IN GROUP serv_group
    PERFORMING sub_FM2_back ON END OF TASK
    TABLES
    date_ra = date_ra.
    第三步.FM执行完之后数据反回,数据返回的参数是全局的,在Z_BAPI_FM*中对全局参数进行赋值。
    FORM sub_fm1_back USING name.
    RECEIVE RESULTS FROM FUNCTION ‘Z_BAPI_FM1’
    TABLES
    ret_par = gdt_ret_pars "返回的参数
    return = gdt_gr_return.
    APPEND LINES OF gdt_gr_return TO gdt_return.
    gr_flag = ‘X’. "这个很重要,根据这个参数判断FM是否执行完毕
    ENDFORM. "sub_fm1_back

    FORM sub_fm2_back USING name.
    RECEIVE RESULTS FROM FUNCTION ‘Z_BAPI_FM2’
    TABLES
    returnpo = gdt_ret_pos
    return = gdt_returnpo_return.
    APPEND LINES OF gdt_returnpo_return TO gdt_return.
    returnpo_flag = ‘X’.
    ENDFORM. "sub_fm2_back

第四步:收尾工作,判断各个FM是否执行完毕
WAIT UNTIL gr_flag = ‘X’ AND returnpo_flag = ‘X’ .
ret_pars[] = gdt_ret_pars. “返回的结果
returnpo[] = gdt_ret_pos. “返回的结果
APPEND LINES OF gdt_return TO return. “最终返回的return ,一般FM都有返回值,返回错误,警告等信息。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值