Logical Database 逻辑数据库
由于修改一个报表程序的缘故,首次接触到LDB(逻辑数据库)。先是惊叹于那么短的代码,连写个选择屏幕都不够啦。后来才知道,选择屏幕是系统自动生成的,这也带来了烦恼,后面将会说怎么修理它。
首先LDB跟SQL语句一样,是选择数据库的一种方式,可通过SE36维护LDB。相比SQL,它的优点是:
- 预设定的选择屏幕。
- LDB可能包含多个数据表作为节点,在使用LDB的程序中,程序员可以忽略具体的数据表之间通过外部关键字设定的关系,而是使用GET事件按照节点层次逐级获取数据。
- LDB可以提高程序的数据筛选效率,并在数据筛选的同时进行用户数据库访问权限检查。
- LDB的维护和设定独立于程序进行。如果数据源发生变化,也可以直接修改逻辑数据库,无需对所有程序进行修改。
LDB由三大部分组成:Structure(结构)、Selections(选集)、Database program(数据库程序)。使用LDB,一般步骤如下:
- 在程序属性指定LDB。
- 指定节点,用Nodes或Tables。(指定后,自动产生选择屏幕)
- 触发GET事件,用GET。
- 用GET ... LATE返回上层数据库表
- 可用REJECT终止当前事件并转向同层下一个GET事件。REJECT dbtab终止当前和所有同一级别后续GET事件,执行上一层的下一GET事件。
使用LDB,先要理解它的处理流程:从最低级节点开始循环。(见附图)
最后说一下如何修改选择屏幕。可选方法之一是Modifying Screens Dynamically。在INITIALIZATION和AT SELECTION-SCREEN OUTPUT的时候,用MODIFY SCREEN语句动态设定屏幕属性。
LOOP AT SCREEN
....
MODIFY SCREEN
....
ENDLOOP.
这个SCREEN TABLE包含Name,Group1,Group2,Group3,Group4,Active等Component,如通过Name设置某屏幕元素的Active为0,就可以将该元素隐藏以来,设Required = 1,文本框变必选。诸如此类。屏幕元素的名称、组可以在屏幕制作器(SE51)查看到。