ABAP 在被访问的程序中获得访问程序的全局变量

 图片 1

图片 2

图片 3

 

以下是一个细小示例:

 

3,在ZTEST_GE电视机中开创一个FM:ZTEST_CALLER,为全局变量global赋值“全局变量”,并调用ZTEST_ACCESSED1

 

 

2,创设第一个函数组:ZTEST_ACCESS,在里面创立必要被调用的函数模块ZTEST_ACCESSED1

1,创造第三个函数组:ZTEST_GE电视机。在TOP文件中宣示全局变量global

 

急需须求,复制一个FM01为ZFM01,修改其中的代码,然后经过Work
Organizer
配备的措施替换掉标准程序中的FM01。

图片 4

 

现运行ZTEST_CALLER,进入调试形式,可以看来:

完了一半,却碰着了绊脚石。因为专业程序中,FM00和FM01是在同一个函数组里面的,因而,那多个函数模块会共用某些全局变量。而自建的ZFM01,显明不属于那么些正式函数组的一局地,因而并不可以直接获取到这几个全局变量。如下图:

可以发现,由于调用栈的转移,想要用刚刚的办法获取调用者的全局变量是十分的:

马上的本身以为,标准函数组中的全局变量的效果范围即标准函数组本身,在这几个函数组之外的函数是不可以拜会到这几个全局变量的。由此,我提出当前的方案不妥当,并交付了进一步精简的法子来满足急需。业务顾问对自家的提出欣然同意。接下来,我很顺畅地做到了费用任务,甚至感到自己做得很不错。

前些日子接到过一个看起来比较一般的须求:

 

4,在被调用的函数模块中写入以下代码(SAPLZ_TEST_GE电视机是调用函数所在的程序名):

但是,事后看来,我实在犯下了无知的错误…在一个被调用的函数里,真的无法访问到调用函数所属函数组中的全局变量吗?答案是:可以。

 

 当然,那不是一种无界定的功用,假若将被调用的次序改为RFC调用,如图:

图片 5

图片 6

留存一个种类专业函数组FG01,内含函数模块FM00,FM01……等等。在系统程序中,FM00会调用FM01,通过FM01获取获取某些数据。

也就是说,此时,大家已经打响地在其次个函数组中获取了第四个函数组中的全局变量的值。

图片 7

图片 8

 

 

相关文章