调试使用了函数模块的程序时需要注意的一个小问题
2007-07-11 09:29
911 查看
昨天下午复制了一个系统标准程序,在它的 SAP List Viewer 控件里添加一个显示字段,结果在内表里增加了字段以后,调试了一个小时也没能在 List Viewer 中显示出来。看看所有调用的地方该添加的都添加了,就是运行到系统的函数模块 REUSE_ALV_FIELDCATALOG_MERGE 时,添加的字段就死活出不来。因为快下班了,就没有继续调——加班解决问题是个不好的工作习惯。
今天早上来了之后,打开程序继续查,在调用 REUSE_ALV_FIELDCATALOG_MERGE 的地方加了个断点,深入函数模块内部继续观察。结果,居然昨天没有显示的字段今天自己就出来了,这也太奇怪了吧。
回想这期间做的工作,再联想到最近看的标准教程,忽然觉悟——由于函数模块所属的函数组在函数模块被调用时会整体加载,同时函数组中间的全局数据对象也一起被加载,并且在程序运行过程中一直保持。
这样这个问题就可以解释了,昨天调试,一直是在事务码 SE38 下进行的,无论怎么改程序,都没有退出事务码,也就没有退出整个程序的内部会话,这样,REUSE_ALV_FIELDCATALOG_MERGE 所属的函数组 SALV 也就总在这个内部会话中盘踞着,导致某些 SALV 中的全局变量在调用时值未改变,从而使输出结果也无法达到预期的内容。而今天是退出 SE38 并重新读取和运行程序,退出后内部会话所占用的内存已经清除,重新运行时会再次加载函数组并初始化相应全局变量,这样用新值运算出来的结果就正确了。
由此想到,学习基础知识确实非常重要。如果没有最近学习标准教程,对此问题就无法解释,最后只能归于 RPWT,而现在能够解释原因并写出这篇文章为后来的朋友解惑,我也感觉到十分欣慰。
今天早上来了之后,打开程序继续查,在调用 REUSE_ALV_FIELDCATALOG_MERGE 的地方加了个断点,深入函数模块内部继续观察。结果,居然昨天没有显示的字段今天自己就出来了,这也太奇怪了吧。
回想这期间做的工作,再联想到最近看的标准教程,忽然觉悟——由于函数模块所属的函数组在函数模块被调用时会整体加载,同时函数组中间的全局数据对象也一起被加载,并且在程序运行过程中一直保持。
这样这个问题就可以解释了,昨天调试,一直是在事务码 SE38 下进行的,无论怎么改程序,都没有退出事务码,也就没有退出整个程序的内部会话,这样,REUSE_ALV_FIELDCATALOG_MERGE 所属的函数组 SALV 也就总在这个内部会话中盘踞着,导致某些 SALV 中的全局变量在调用时值未改变,从而使输出结果也无法达到预期的内容。而今天是退出 SE38 并重新读取和运行程序,退出后内部会话所占用的内存已经清除,重新运行时会再次加载函数组并初始化相应全局变量,这样用新值运算出来的结果就正确了。
由此想到,学习基础知识确实非常重要。如果没有最近学习标准教程,对此问题就无法解释,最后只能归于 RPWT,而现在能够解释原因并写出这篇文章为后来的朋友解惑,我也感觉到十分欣慰。
相关文章推荐
- 调试使用了函数模块的程序时需要注意的一个小问题
- 一个使用手机时需要注意的问题
- php的crc32函数使用时需要注意的问题(不然就是坑)
- 使用string.Format需要注意的一个性能问题
- Javascript中使用parseInt函数需要注意的问题
- 使用DB2中需要注意的一个问题。
- 问题一:编写函数stringcat,实现字符串的连接,程序中需要使用指针形式访问字符串
- 使用jQuery Ajax功能的时候需要注意的一个问题
- 使用synchronized需要注意的一个问题
- 多线程原理、线程安全函数和多线程程序需要注意的问题
- 使用标准C库读文件时需要注意的一个问题
- js函数写法一个需要注意的问题(如果不需要做js压缩优化则可以不用注意)
- 《转》使用jQuery Ajax功能的时候需要注意的一个问题
- PHP的foreach中使用引用时需要注意的一个问题和解决方法
- 使用jQuery Ajax功能的时候需要注意的一个问题
- Windows下使用创建多层文件夹 SHCreateDirectoryEx 函数需要注意的问题
- 使用jQuery Ajax功能的时候需要注意的一个问题
- 包含别人的dll,然后我们用类库再次封装成dll的时候的注意事项;源文件与模块生成时的文件不同;创建调试信息文件 ··PDB时发生意外的错误,进程无法访问文件,因为另一个程序正在使用此文件
- 实例解析使用指针作为函数参数传递需要注意的问题
- Android使用service的bind方式使用服务的使用需要注意的一个问题