• 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都有返回值,返回错误,警告等信息。

  • 相关阅读:
    Core Data 入门
    iOS布局之Auto Layout
    iOS 布局之 Springs and Struts
    Soul 学习笔记---使用 nacos 实现数据同步上篇(七)
    Soul 学习笔记---使用 zookeeper 实现数据同步(六)
    Soul 学习笔记---数据同步 websocket 连接建立过程分析(五)
    Soul 学习笔记---soul 数据同步的浅显分析(四)
    Soul学习笔记---运行 soul-examples-dubbo(三)
    Soul学习笔记---运行 soul-examples-http(二)
    windows下安装zookeeper 及 遇到的问题---打开zkServer.cmd闪退,此时不应有 Javajdk1.8.0_144
  • 原文地址:https://www.cnblogs.com/byfhd/p/1082661.html
Copyright © 2020-2023  润新知