http://scn.sap.com/thread/18844

 
 

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

            . 

第二步:分别写多个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都有返回值,返回错误,警告等信息。

 
 

From <http://www.cnblogs.com/byfhd/archive/2008/02/26/1082661.html>

Abap 多线程的更多相关文章

  1. ABAP开发顾问必备:SAP ABAP开发技术总结

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  2. ABAP RFC远程调用

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  3. [SAP ABAP开发技术总结]BAPI调用

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  4. ABAP开发顾问必备:SAP ABAP开发技术总结[转载]

    转载自SAP师太技术博客,原文链接:http://www.cnblogs.com/jiangzhengjun/p/4260224.html 在原文上增加了链接,此文及此文的链接版权都归SAP师太所有. ...

  5. SAP下载报表速度慢?为啥你不试试python多线程

    由于SAP系统自身原因,或者公司内部ABAP代码的算法效率不高,我们经常遇到,手工执行某个事务代码下载某个报表会非常耗时,小爬曾见过公司某个自开发的报表,单家公司的数据下载超过半小时.如果我们刚好接到 ...

  6. Python中的多进程与多线程(一)

    一.背景 最近在Azkaban的测试工作中,需要在测试环境下模拟线上的调度场景进行稳定性测试.故而重操python旧业,通过python编写脚本来构造类似线上的调度场景.在脚本编写过程中,碰到这样一个 ...

  7. 多线程爬坑之路-Thread和Runable源码解析之基本方法的运用实例

    前面的文章:多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类) 多线程爬坑之路-Thread和Runable源码解析 前面 ...

  8. 多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类)

    前言:刚学习了一段机器学习,最近需要重构一个java项目,又赶过来看java.大多是线程代码,没办法,那时候总觉得多线程是个很难的部分很少用到,所以一直没下决定去啃,那些年留下的坑,总是得自己跳进去填 ...

  9. Java多线程

    一:进程与线程 概述:几乎任何的操作系统都支持运行多个任务,通常一个任务就是一个程序,而一个程序就是一个进程.当一个进程运行时,内部可能包括多个顺序执行流,每个顺序执行流就是一个线程.   进程:进程 ...

随机推荐

  1. spring外部化配置

    例如 <bean id="dataSource" class="....." p:username="aa" p:password=& ...

  2. 如何限制textarea文本框的输入字数

    代码实例如下: <!doctype html><html><head><meta charset="UTF-8"><title ...

  3. NodeJS常用工具

    一.NodeJS版本管理器n或者nvm npm install -g n npm install n -g --registry=https://registry.npm.taobao.org --v ...

  4. [Flex] ButtonBar系列——最后一个项目的样式设置

    <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="ht ...

  5. Innosetup中将bat文件压缩到压缩包中

      有时候在安装的过程中需要调用某些文件(bat或者exe等文件),但是只需要使用一次,然后就可以删掉该文件, 在Innosetup中应该这样操作: 1.在.iss脚本的[Files]章节写下: So ...

  6. Delphi调用外部程序函数:WinExec() 和ShellExecute详解

    1,WinExec():   WinExec主要运行EXE文件,不能运行其他类型的文件.不用引用特别单元.   原型:UINT WinExec(exePath,ShowCmd)   示例,我想要用记事 ...

  7. (easy)LeetCode 226.Invert Binary Tree

    Invert a binary tree. 4 / \ 2 7 / \ / \ 1 3 6 9 to 4 / \ 7 2 / \ / \ 9 6 3 1 Trivia:This problem was ...

  8. Oracle Dataguard Standby Redo Log的两个实验

    在Data Guard环境中,Standby Redo Log是一个比较特殊的日志类型.从最新的DG安装指导中,都推荐在Primary和Standby端,都配置Standby Redo Log. 简单 ...

  9. CString.Format的详细用法(转)

    CString.Format的详细用法(转) 在MFC程序中,使用CString来处理字符串是一个很不错的选择.CString既可以处理Unicode标准的字符串,也可以处理ANSI标准的字符串.CS ...

  10. Powerdesigner 导出Excel格式数据字典 导出Excel格式文件

    版权声明:本文为博主原创文章,转载请注明出处; 网上我也看到了很多的Powerdesigner 导出方法,因为Powerdesigner 提供了部分VBA功能,所以让我用代码导出Excel格式文件得以 ...