sap abap程序之间的调用

sap abap程序之间的调用 一,同步调用从一个程序同步调用其他的ABAP程序,有2种方式: 1,调用程序被打断,当被调用程序执行完毕之后,调用程序继续执行。如: CALL FUNCTION SUBMIT AND RETURN CALL 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。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值