zoukankan      html  css  js  c++  java
  • SAP 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都有返回值,返回错误,警告等信息。

  • 相关阅读:
    今日头条Go建千亿级微服务的实践
    Apache JServ Protocol
    tomcat servlet JSP common gateway interface 公共网关接口
    pollable event-driven Flume source
    kernel.panic
    Linux查找含有某字符串的所有文件
    深入理解Linux修改hostname
    px em rem
    这跟他们的前辈在原生应用程序或印刷出版物中做的设计或多或少有点类似。
    字符串等长切分 视频字幕换行
  • 原文地址:https://www.cnblogs.com/byfhd/p/1082661.html
Copyright © 2011-2022 走看看