Abap 多线程
http://scn.sap.com/thread/18844
第一步:初始化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 多线程的更多相关文章
- ABAP开发顾问必备:SAP ABAP开发技术总结
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- ABAP RFC远程调用
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- [SAP ABAP开发技术总结]BAPI调用
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- ABAP开发顾问必备:SAP ABAP开发技术总结[转载]
转载自SAP师太技术博客,原文链接:http://www.cnblogs.com/jiangzhengjun/p/4260224.html 在原文上增加了链接,此文及此文的链接版权都归SAP师太所有. ...
- SAP下载报表速度慢?为啥你不试试python多线程
由于SAP系统自身原因,或者公司内部ABAP代码的算法效率不高,我们经常遇到,手工执行某个事务代码下载某个报表会非常耗时,小爬曾见过公司某个自开发的报表,单家公司的数据下载超过半小时.如果我们刚好接到 ...
- Python中的多进程与多线程(一)
一.背景 最近在Azkaban的测试工作中,需要在测试环境下模拟线上的调度场景进行稳定性测试.故而重操python旧业,通过python编写脚本来构造类似线上的调度场景.在脚本编写过程中,碰到这样一个 ...
- 多线程爬坑之路-Thread和Runable源码解析之基本方法的运用实例
前面的文章:多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类) 多线程爬坑之路-Thread和Runable源码解析 前面 ...
- 多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类)
前言:刚学习了一段机器学习,最近需要重构一个java项目,又赶过来看java.大多是线程代码,没办法,那时候总觉得多线程是个很难的部分很少用到,所以一直没下决定去啃,那些年留下的坑,总是得自己跳进去填 ...
- Java多线程
一:进程与线程 概述:几乎任何的操作系统都支持运行多个任务,通常一个任务就是一个程序,而一个程序就是一个进程.当一个进程运行时,内部可能包括多个顺序执行流,每个顺序执行流就是一个线程. 进程:进程 ...
随机推荐
- Altiium Designer 09 解决局域网冲突的办法(转载)
Altiium Designer 09 解决局域网冲突的办法(转载) 一 通过防护墙禁止进程访问网络: 1.1打开DXP.EXE,然后在360的流量防护墙或WINDOWS防护墙禁止该进程访问网络.注意 ...
- 关于this指向思考
事情起因为<js函数式编程指南>里面看到这段话: 上例DB对象中的save方法作为参数传入到fs的readFile,按道理this指向DB,为啥作者的意思是存在this指针可能会指向其他地 ...
- 将多个网页制作成一个CHM文件
有时我们想将一个网站上的多个页面集中保存起来,在即使没有网络的情况下也能够查看. 这时可以将这些网页保存成.mht的单个文件(在IE中打开时,点击 文件 -> 另存) 再使用Easy CHM去将 ...
- [ActionScript 3.0] AS3 实现XML转换成JSON
package com.fylib.util { /** * @author Frost.Yen * @E-mail 871979853@qq.com * @create 2015-6-18 下午2: ...
- crm 2011 plugin setparent setbusiness 用户更改经理 更改办事处
背景: 在更改经理或者更改办事处时,使用plugin处理相应的团队. 问题:plugin写完,注册时发现使用update注册没有效果,然后bing得到,这里要使用setbusiness 和 setpa ...
- windows平台快速安装 matplotlib
版本:Python2.7.9 Pip 1.5.6 如果没有安装VC2008以上版本,就需要工具Microsoft Visual C++ Compiler for Python 2.7 http://w ...
- Regex 例
密码复杂度:数字英文符号Regex r = new Regex("^(?:(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])|(?=.*[A-Z])(?=.*[a-z])(? ...
- jquery ui datepicker中文显示
$.datepicker.regional['zh-CN'] = { closeText: '关闭', prevText: '<上月', nextText: '下月>', currentT ...
- Chrome内嵌 FlashPlayer(PPAPI)会被页面DHTML元素遮住的问题
flash的wmode为window,Chrome版本为29.0.1547.66 m,Flash PPAPI为11.8.800.97,Flash NPAPI为11,8,800,94. flash在正常 ...
- Chapter Schema
Chapter Schema Schema是XF的核心,每一个读写方法都有一个相关联的Schema.方法首先解析Schema,然后再根据Schema的配置的执行. 那Schema是什么呢?Schema ...