ITPub博客

首页 > 应用开发 > IT综合 > 调试使用了函数模块的程序时需要注意的一个小问题

调试使用了函数模块的程序时需要注意的一个小问题

原创 IT综合 作者:zclouis 时间:2007-10-05 23:02:57 0 删除 编辑

昨天下午复制了一个系统标准程序,在它的 SAP List Viewer 控件里添加一个显示字段,结果在内表里增加了字段以后,调试了一个小时也没能在 List Viewer 中显示出来。看看所有调用的地方该添加的都添加了,就是运行到系统的函数模块 REUSE_ALV_FIELDCATALOG_MERGE 时,添加的字段就死活出不来。因为快下班了,就没有继续调——加班解决问题是个不好的工作习惯。
今天早上来了之后,打开程序继续查,在调用 REUSE_ALV_FIELDCATALOG_MERGE 的地方加了个断点,深入函数模块内部继续观察。结果,居然昨天没有显示的字段今天自己就出来了,这也太奇怪了吧。

回想这期间做的工作,再联想到最近看的标准教程,忽然觉悟——由于函数模块所属的函数组在函数模块被调用时会整体加载,同时函数组中间的全局数据对象也一起被加载,并且在程序运行过程中一直保持。
这样这个问题就可以解释了,昨天调试,一直是在事务码 SE38 下进行的,无论怎么改程序,都没有退出事务码,也就没有退出整个程序的内部会话,这样,REUSE_ALV_FIELDCATALOG_MERGE 所属的函数组 SALV 也就总在这个内部会话中盘踞着,导致某些 SALV 中的全局变量在调用时值未改变,从而使输出结果也无法达到预期的内容。而今天是退出 SE38 并重新读取和运行程序,退出后内部会话所占用的内存已经清除,重新运行时会再次加载函数组并初始化相应全局变量,这样用新值运算出来的结果就正确了。

由此想到,学习基础知识确实非常重要。如果没有最近学习标准教程,对此问题就无法解释,最后只能归于 RPWT,而现在能够解释原因并写出这篇文章为后来的朋友解惑,我也感觉到十分欣慰。

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7941665/viewspace-974841/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-04-21

  • 博文量
    40
  • 访问量
    125859