[SAP ABAP开发技术总结]Function远程、同步、异步调用

目录导航

声明:原创作品,转载时请注明文章来自SAP师太博客,并以超链接形式标明文章原始出处,否则将追究法律责任!
原文出自:

20.1.         Function调用... 233

20.1.1.     更新FM:LUW.. 233

20.1.2.     RFC函数:远程调用... 234

20.1.2.1.           同步... 234

20.1.2.2.           异步... 234

20.1.2.2.1.       事务性RFC调用... 234

20.1.2.3.           DESTINATION 取值... 234

20.1.     Function调用

20.1.1.             更新FM:LUW

CALL FUNCTION update_function IN UPDATE TASK直到Commit Work 才运行

主要用于本地更新(非远程RFC调用,如果是远程调用,则采用事务性RFC调用方式:IN BACKGROUND TASK

20.1.2.             RFC函数:远程调用

20.1.2.1.       同步

CALL FUNCTIONfunc [DESTINATION dest]  [?desti?nei??n]

(在DESTINATION不省略的情况下,且dest取值又不为SPACE,则函数一定要是RFC函数才能采用此方式进行远程同步调用)

20.1.2.2.       异步

CALL FUNCTION rfm_name STARTING NEW TASK [DESTINATION dest]taskname PERFORMING return_form ON END OF TASK

FORM return_form USING taskname.
  ...
  RECEIVE RESULTS FROM FUNCTION rfm_name
  ...
ENDFORM.

等待多个异步调用的返回结果:WAIT UNTIL log_exp [UP TO sec SECONDS].

异步调用时不能有IMPORTING参数;函数一定要是RFC函数才能采用异步调用;只要有STARTING NEW TASK选项,即为异步调用;如果是异步调用同一目标端的RFC函数,则可以省略DESTINATION

20.1.2.2.1.              事务性RFC调用

实质上事务RFC调用也属于异步调用

CALL FUNCTIONfunc IN BACKGROUND TASK [DESTINATION dest],并不立即执行,直到主调程序中的COMMIT WORK语句(隐式提交不要,一定要使用COMMIT WORK显示提交)才一次性执行多个远程函数调用

(函数一定要为RFC函数,且要通过Commit Work语句显示提交后,才会去执行,否则不会执行;如果是同一目标端的RFC函数,则可以省略DESTINATION)

20.1.2.3.       DESTINATION取值

l  目标NONE:当前程序所在应用服务器作为目标系统,但调用过程还是RFC远程方式来调用,这与SPACE是同的

l  目标SPACEDESTINATION选项将会被忽略,被调功能函数将作为普通函数在本机调用

l  目标BACK:用于被远程调用的RFM程序内部的CALL FUNCTION语句中的目标指定,通过已建立的RFC连接反过来调用该函数的主调者系统中的其他功能模块(即主调程序—>远程系统中的RFM—>又回调主调程序所在系统中的其他函数)

时间: 2024-11-17 16:57:44

[SAP ABAP开发技术总结]Function远程、同步、异步调用的相关文章

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

声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将追究法律责任!原文链接:http://www.cnblogs.com/jiangzhengjun/p/4260224.html 该文档是根据我过去多年学习文档与工作文档总结而成,项目开发过程中我都会参考此文档,主要ABAP很多细节上的东西不可能你记得很牢固,或者你记得一时,但过不了几天做别的项目就会

[SAP ABAP开发技术总结]ABAP程序之间数据共享与传递

目录导航 声明:原创作品,转载时请注明文章来自SAP师太博客,并以超链接形式标明文章原始出处,否则将追究法律责任!原文出自: 19.             数据共享与传递... 222 19.1.         程序调用.会话.SAP/ABAP内存 关系... 222 19.2.         ABAP Memory数据共享... 224 19.2.1.     EXPORT. 224 19.2.2.     IMPORT. 226 19.2.3.     DELETE. 227 19.3

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

目录导航 声明:原创作品,转载时请注明文章来自SAP师太博客,并以超链接形式标明文章原始出处,否则将追究法律责任!原文出自: 18.3.2.5.           调用BAPI 199 18.3.2.5.1.       BAPI事务处理... 200 18.3.2.5.2.       外部系统(Java)调用BAPI函数... 201 18.3.2.5.2.1.    直连.连接池... 201 18.3.2.5.2.2.    访问结构... 202 18.3.2.5.2.3.    访

[SAP ABAP开发技术总结]IDoc

目录导航 声明:原创作品,转载时请注明文章来自SAP师太博客,并以超链接形式标明文章原始出处,否则将追究法律责任!原文出自: 18.4.         IDoc. 206 18.4.1.     数据段类型和数据段定义(WE31)... 206 18.4.2.     IDoc定义(WE30)... 207 18.4.3.     自定义IDoc发送与接收实例... 208 18.4.3.1.           发送端800(outbound)配置... 208 1.创建segment(WE

[SAP ABAP开发技术总结]业务对象和BAPI

目录导航 声明:原创作品,转载时请注明文章来自SAP师太博客,并以超链接形式标明文章原始出处,否则将追究法律责任!原文出自: 18.3.         业务对象和BAPI 184 18.3.1.     SAP业务对象(SWO1)... 184 18.3.1.1.           业务对象类型的组成... 185 18.3.1.2.           业务对象(BO)设计... 185 18.3.1.2.1.       创建业务表... 185 18.3.1.2.2.       创建

[SAP ABAP开发技术总结]客户端文本文件、Excel文件上传下载

目录导航 声明:原创作品,转载时请注明文章来自SAP师太博客,并以超链接形式标明文章原始出处,否则将追究法律责任!原文出自: 客户端文本文件或Excel文件导入与导出... 1 TEXT_CONVERT_XLS_TO_SAP. 1 ALSM_EXCEL_TO_INTERNAL_TABLE. 3 SAP_CONVERT_TO_XLS_FORMAT. 5 客户端文本文件或Excel文件导入与导出 TEXT_CONVERT_XLS_TO_SAP TEXT_CONVERT_XLS_TO_SAP函数可以将

[SAP ABAP开发技术总结]EXIT-COMMAND

声明:原创作品,转载时请注明文章来自SAP师太博客,并以超链接形式标明文章原始出处,否则将追究法律责任!原文出自: 12.8.     EXIT-COMMAND 12.8.1.           MODULE <mod> AT EXIT-COMMAND 对话屏幕中,对于E类型的Function Code,可以使用如下语句在PAI事件块中来触发: MODULE<mod> AT EXIT-COMMAND. 不管该语句在screen flow logic的PAI事件块里的什么地方,都会

[SAP ABAP开发技术总结]OK_CODE

声明:原创作品,转载时请注明文章来自SAP师太博客,并以超链接形式标明文章原始出处,否则将追究法律责任!原文出自: 12.9.     OK_CODE 如果是回车(命令行中未输入内容时回车)时,由于FunctionCode为空,所以SYST-UCOMM .SY-UCOMM.OK_CODE都不会被重置:如果非回车,但FunctionCode也是空时,SYST-UCOMM.SY-UCOMM会被重置,但OK_CODE还是不会被重置,所以OK_CODE只有在FunCode非空时才会被重置 12.9.1.

[SAP ABAP开发技术总结]ABAP读取写XML文件

目录导航 声明:原创作品,转载时请注明文章来自SAP师太博客,并以超链接形式标明文章原始出处,否则将追究法律责任!原文出自: 20.6.         XML. 236 20.6.1.     生成... 237 20.6.2.     解析... 240 20.6.     XML if_ixml if_ixml_documentif_ixml_node if_ixml_element if_ixml_istream if_ixml_ostream document.element.ATTR