函数组的文件结构
初学 ABAP 函数模块的的朋友经常会被函数组整体的复杂结构搞晕,弄不清楚函数模块跟函数组有什么关系,全局数据又是什么东西,其实只要稍微整理一下,函数组的整体结构就很清楚了,下面我就用一个实例说明一下。
假设,函数组的名称为 <fgroup>,其中包含两个函数模块 <fmodule1> <fmodule2>。这里用尖括号是为了更好的区分 SAP 自动添加的命名规则和用户定义的名称。
则整个函数组就包含下列文件(ABAP 概念的文件,或者叫程序更准确一些)。
SAPL<fgroup>:这个是函数组主文件,内容如下:
*******************************************************************
*???System-defined?Include-files.?????????????????????????????????*
*******************************************************************
??INCLUDE?L<fgroup>TOP.???????????????????????"?Global?Data
??INCLUDE?L<fgroup>UXX.???????????????????????"?Function?Modules
*******************************************************************
*???User-defined?Include-files?(if?necessary).????????????????????*
*******************************************************************
*?INCLUDE?L<fgroup>F???????????????????????"?Subprograms
*?INCLUDE?L<fgroup>O???????????????????????"?PBO-Modules
*?INCLUDE?L<fgroup>I???????????????????????"?PAI-Modules
?
然后,包含文件 L<fgroup>TOP 中是函数组定义和全局数据,内容如下:
FUNCTION-POOL?zmdtext.??????????????????????"MESSAGE-ID?..
*?Other?Globle?Data
?
而包含文件 L<fgroup>UXX 中则又包含了两个包含文件,并且它是不允许用户手工修改,而是 SAP?自动管理:
?
*****************************************************************
*???THIS?FILE?IS?GENERATED?BY?THE?FUNCTION?LIBRARY.?????????????*
*???NEVER?CHANGE?IT?MANUALLY,?PLEASE!???????????????????????????*
*****************************************************************
INCLUDE?L<fgroup>U01.
????????????????????"<fmodule1>
INCLUDE?L<fgroup>U02.
????????????????????"<fmodule2>
?
名为? L<fgroup>Uxx 的包含程序则每个包含了一个函数模块的定义 FUNCTION?<fmodulexx> ... ENDFUNCTION
用户还可以在函数组的主程序中添加其它包含文件或代码,用来存储子程序、PAI、PBO 等数据。
用一个树型结构展开如下:
SAPL<fgroup>
L<fgroup>TOP
L<fgroup>UXX
L<fgroup>U01
L<fgroup>U02
L<fgroup>U....
L<fgroup>F
L<fgroup>O
L<fgroup>I
?
?