水寒冰居

爱生活,爱自由
posts - 53, comments - 22, trackbacks - 0, articles - 0
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

公告

关于SAP LUW

Posted on 2011-07-12 00:43 水寒冰 阅读(88) 评论(0) 编辑 收藏

假设MAIN PROGRAM(调用程序)为MAIN,其所在的为SAP LUW 1。

使用CALL FUNCTION 'AAA'的时候,MAIN被打断,在同一个internal session执行FM 'AAA',当FM执行完毕之后,继续执行MAIN。因此整个过程是在同一个SAP LUW内进行的。

使用SUBMIT AAA AND RETURN或者CALL TRANSACTION TCODE的时候,MAIN被打断,新开一个internal session(SAP LUW 2),AAA或者TCODE在新的internal session中执行,执行完之后,新开的internal session终止,MAIN继续执行,因此整个过程有两个SAP LUW。

当使用CALL TRANSACTION <tcode>的时候,有点特别的东西要注意.如果MAIN程序和调用的TCODE程序中都含有POC或者CFIUT,因为它们分属不同的 SAP LUW,因此在两个程序中都必须有各自的COMMIT WORK.该情况也适用于SUBMIT <program> AND RETURN。

使用SUBMIT AAA的时候,MAIN终止,SAP LUW 1结束,但是还是在同一个internal session,AAA被加载,新的SAP LUW 2产生。

使用LEAVE TO TRANSACTION TCODE的时候,效果跟使用SUBMIT AAA看起来差不多,但是是有本质区别的。当前external session所在的所有的internal session先被删除,再产生一个新的internal session,TCODE加载到新的internal session中执行。所以虽然都是两个SAP LUW,但是过程不太一样。