如何理解SAPABAP程序之间的调用

如何理解SAP ABAP 程序之间的调用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

创新互联公司主营前锋网站建设的网络公司,主营网站建设方案,成都app软件开发公司,前锋h5重庆小程序开发搭建,前锋网站营销推广欢迎前锋等地区企业咨询

一,同步调用从一个程序同步调用其他的ABAP程序,有2种方式:

1,调用程序被打断,当被调用程序执行完毕之后,调用程序继续执行。如:CALL FUNCTION SUBMIT AND RETURNCALL TRANSACTION 使用CALL FUNCTION 'AAA'调用FM的时候,相应的FUNCTION GROUP被加载到调用程序所在的internal session。当FM执行完毕,接着执行调用程序。FUNCTION GROUP和其GLOBAL DATA会一直保存在这个internal session直到调用程序结束。当调用程序再次调用这个FM的时候,不会再次加载相应的FUNCTION GROUP。这个FUNCTON GROUP的GLOBAL DATA和第一次调用它时的内容是一样的。 使用SUBMIT AND RETURN或者CALL TRANSACTION 的时候,实际是插入了一个新的internal session,当被调用的程序执行完毕之后,新插入的internal session会被删除,继续执行调用程序。可以使用leave program语句来结束程序。 

2,调用程序被结束,被调用程序开始执行。如:SUBMIT LEAVE TO TRANSACTION . 使用SUBMIT语句之后,调用程序从所在的internal session中被删除了,被调用的程序被加载到这个internal session。 使用LEAVE TO TRANSACTION 之后,当前external session中的所有internal session会被删除,并产生一个新的internal session,被调用的tcode会加载到这个新的internal session中。特别要注意的是,使用这个语句之后,ABAP MEMORY会被初始化,意思就是你不可以通过ABAP MEMORY向被调用的tcode传值。 

二,FUNCTION MODULE的异步调用CALL FUNCTION 'AAA' STARTING NEW TASK    PERFORMING ON END OF TASK    EXPORTING          .....使用上面语句之后,AAA和调用其的程序 会并行运行。可以在中使用RECEIVE RESULTS FROM FUNCTION 'AAA'语句来获得FUNCTION运行的结果。值得注意的是,用STARTING NEW TASK形式的FM的processing type必须要是REMOTE-CAPABLE MODULE.

 三,LOGICAL MEMORY一个用户session可以有多个external session,可以理解你开了几个SAP的窗口,就有几个external session,一般设置为6个。 一个external session里可以有多个internal session(最多20个,想想LIST的LSIND为什么不能超过20)。一个程序一般来说是在一个internal session里处理的。 可以用ABAP MEMORY(EXPORT/IMPORT)和SAP MEMORY(GET/SET)在不同的程序之间传递数据。 一个用户session有一个SAP MEMORY,这个用户session里所有session都可以访问SAP MEMORY,但是SAP MEMORY一般用于不同external session间的internal session传值。每个external session包含一个ABAP MEMORY,属于这个external session的internal session都可以访问这个ABAP MEMORY,ABAP MEMORY适合在一个external session的不同internal session间传值。 当external session终止的时候,自动会释放其ABAP MEMORY。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联行业资讯频道,感谢您对创新互联的支持。


文章标题:如何理解SAPABAP程序之间的调用
本文路径:http://scyanting.com/article/psggoo.html