ACCESSABAP 于受看的主次中取访问程序的全局变量

 

前几日子接到过一个圈起比较一般的急需:

在一个网专业函数组FG01,内含函数模块FM00,FM01……等等。在网先后中,FM00会调用FM01,通过FM01获取获取某些数据。

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

 

完成一半,却撞了阻力。因为专业程序中,FM00和FM01凡在和一个函数组里面的,因此,这简单只函数模块会同步用一些全局变量。而自从建的ZFM01,显然不属是专业函数组的同等部分,因此并无克一直获取到这些全局变量。如下图:

ACCESS 1

当时底本人认为,标准函数组中的全局变量的图范围就业内函数组本身,在斯函数组之外的函数是未可能访问到这些全局变量的。因此,我提出当前底方案免妥当,并吃出了更为精简的法门来满足需求。业务顾问对自家的建议欣然同意。接下来,我颇顺畅地得了付出任务,甚至感到好举行得大对。

 

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

 

以下是一个小示例:

1,创建第一个函数组:ZTEST_GETV。在TOP文件被声明全局变量global

 ACCESS 2

 

2,创建第二只函数组:ZTEST_ACCESS,在里创建需要为调用的函数模块ZTEST_ACCESSED1

ACCESS 3

 

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

ACCESS 4

 

4,在叫调用的函数模块中描写副以下代码(SAPLZ_TEST_GETV是调用函数所于的次名为):

ACCESS 5

 

现运行ZTEST_CALLER,进入调试模式,可以看出:

ACCESS 6

 

也就是说,此时,我们都成地于亚独函数组中收获了第一个函数组中之全局变量的价。

 

 当然,这不是千篇一律种植无界定的效用,如果拿受调用的主次改也RFC调用,如图:

ACCESS 7

可以窥见,由于调用栈的转移,想使为此刚刚的艺术赢得调用者的全局变量是非常的:

ACCESS 8

相关文章