当使用扩展程序检查,我得到以下警告:在ABAP本地化全球varables报告
不要声明领域和全球领域的符号(
variable name
)。
这是从选择屏幕之前声明全局数据。显而易见的解决方案是,它们应该在子程序中进行本地声明。
如果我决定这样做,现在数据将超出其他子例程的范围,所以我最终会创建一些对C或Java中的main()
函数的影响。这听起来像是一个好主意 - 但是,像INITIALIZATION
这样的事件不允许在子程序中,这意味着它会强制中断程序。
观察下面的示例程序:
REPORT Z_EXAMPLE.
SELECTION-SCREEN BEGIN OF BLOCK upload WITH FRAME TITLE text-H01.
PARAMETERS: p_infile TYPE rlgrap-filename LOWER CASE OBLIGATORY.
SELECTION-SCREEN END OF BLOCK upload.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_infile.
PERFORM main1 CHANGING p_infile.
INITIALIZATION.
PERFORM main2.
TOP-OF-PAGE.
PERFORM main3.
...
main1
,main2
和main3
不能就我所知的任何数据传递到彼此没有全局声明。如果从main1
上传的文件p_infile
解析数据,则无法在main2
或main3
中访问该数据。除了一起忽略事件,是否有任何方法来遵守警告,但让数据通过事件传递?
谢谢。你对ABAP的关心太少了,你肯定是对的 - 但有人必须以身作则。我有一份Cengage Learning的ABAP编程介绍第三版的介绍,第294页的示例程序ZCHECK仅包含全局变量。你知道任何好的资源对于试图遵守编程标准的ABAPer有帮助吗? – gkubed
我认为你正在使用扩展程序检查('SLIN')进入正确的轨道。如果您正在寻找需要阅读的内容,[官方ABAP编程指南](https://www.sap-press.com/official-abap-programming-guidelines_2093/)是一个很好的参考。 – mjturner
@mjturner我在文档中看到子程序已经过时。 – Christian