收藏 分享(赏)

SAP的ABAP4语言中文培训教材第二部分第十章逻辑数据库 的特征和维 护.doc

上传人:dreamzhangning 文档编号:2688565 上传时间:2018-09-25 格式:DOC 页数:22 大小:177.50KB
下载 相关 举报
SAP的ABAP4语言中文培训教材第二部分第十章逻辑数据库 的特征和维 护.doc_第1页
第1页 / 共22页
SAP的ABAP4语言中文培训教材第二部分第十章逻辑数据库 的特征和维 护.doc_第2页
第2页 / 共22页
SAP的ABAP4语言中文培训教材第二部分第十章逻辑数据库 的特征和维 护.doc_第3页
第3页 / 共22页
SAP的ABAP4语言中文培训教材第二部分第十章逻辑数据库 的特征和维 护.doc_第4页
第4页 / 共22页
SAP的ABAP4语言中文培训教材第二部分第十章逻辑数据库 的特征和维 护.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

1、第十章 逻辑数据库 的特征和维 护概览内容逻辑数据库 的特征 逻辑数据库 的任务 逻辑数据库 的基本特征 .逻辑数据库 的授权检查 .逻辑数据库 的性能 逻辑数据库 示例 创建和维护 逻辑数据库 .创建逻辑数 据库 处理结构 .编辑选择 .编辑数据库 程序 编辑选择文 本 编辑匹配码 选择 编辑文档 .其它编辑选 项 编辑数据模 型 检查逻辑数 据库 复制逻辑数 据库 删除逻辑数 据库 逻辑数据库 是 ABAP/4 报表读取和 处理数据的 方法。每个 ABAP/4 报表都链接 到报表属性 指定的逻辑 数据库中。逻辑数据库 有个三字符 的名称(例 如,KDF ) ,其最后字 母表示应用 。定义报

2、表 属性时如果 不指定逻辑 数据库的名 称,则系统 使用控制选 择屏幕格式 的标准数据 库,但不读 取任何数据 。在本节中, 还可以了解有关逻辑数 据库的其它 节:通过逻辑数 据库访问数 据的一般介 绍,参见使用逻辑数据库访问数据库表 (页 Error! Not a valid link.) 。关于如何使 用报表中连 接到选定屏 幕的逻辑数 据库的信息 ,参见选择屏幕与 逻辑数据库 (页 Error! Not a valid link.) 关于在报表 中如何分析 逻辑数据库 读取的数据 的信息,参 见通过事件控制 ABAP/4 程序流 (页 Error! Not a valid link.)

3、逻辑数据库 的特征逻辑数据库 能提高数据 库访问的效 率并且提供 易于使用和 生成的用户 界面。在下列主题 中,可以了 解关于逻辑数 据库的示例 ,参见逻辑数据库 的任务逻辑数据库 允许集中编 程几个不同 的任务。例 如,在逻辑 数据库中集 中编码用户 界面格式和 数据库访问 ,以避免报 表的应用逻 辑去处理技 术细节。逻 辑数据库可 以执行下列 任务:如果几个 报表读取相 同数据,则 可以在单个 逻辑数据库 中编码读取 访问。对于 单个报表, 不再需要知 道所涉及的 数据库表的 确切结构( 特别是外来 关键字相关 性)。但是 ,可以肯定 当执行 GET 事件时将以 正确的顺序 检索该项。如果

4、要为 几个报表使 用相同用户 界面,则可 以使用逻辑 数据库的选 择屏幕轻易 地达到目的 。要达到必 要的适应性 ,可以生成 自己的选择 屏幕版本。在逻辑数 据库中集中 编码重要( 以及敏感的 )数据的授 权检查,以 使它们不受 单个报表的 影响。如果要提 高响应时间 ,则逻辑数 据库允许采 取多种措施 达到目的( 例如使用视 图替代嵌入 的 SELECT 语句)。这 些在所有相 关报表中立 即生效并且 避免修改源 代码。逻辑数据库 的基本特征下列定义解 释了逻辑数 据库的基本 特征:定义ABAP/4 报表使用逻 辑数据库读 取和处理数 据。报表可 用的数据顺 序取决于相 关逻辑数据 库的层次

5、结 构。逻辑数 据库也提供 用户对话框 (即选择平 幕)的界面 并且将用户 输入检查和 错误对话组 合起来。可 以在报表中 修改并扩展 该界面。该定义由逻 辑数据库格 式实现:格式逻辑数据库 包括至少下 列三个组件 :结构结构是逻辑 数据库的基 本组件。它 决定其它组 件的结构以 及运行时逻 辑数据库的 行为。逻辑数据库 结构 (页 ) 选择该组件决定 每个报表的 用户界面。 其格式通常 由结构决定 。可以调整 和扩展选择 以适应需要 。逻辑数据库 选择 (页 ) 数据库程 序数据库程序 是选择数据 并将其传递 到报表的子 程序集合。 数据库程序 的格式由结 构和选择共 同决定。可 以调整和扩

6、 展数据库程 序以适应需 要。逻辑数据库 的数据库程 序 (页 ) 其它组件诸 如文档、特 定语言文本 和用户定义 选择屏幕将 进一步扩展 功能。逻辑数据库 允许模块化 报表中使用 的应用程序 :逻辑数据库 和报表逻辑数据库 程序中的子 程序和报表 的处理块, 其中将逻辑 数据库指定 为属性,组 成执行数据 库访问的模 块化系统。 与逻辑数据 库的结构和 选择屏幕分 开,报表中 的 GET 语句决定运 行时数据库 的行为。逻辑数据库 和 ABAP/4 报表 (页 ) 逻辑数据库 结构通常,逻辑 数据库反映 SAP 系统中层次 表格的外来 关键字相关 性。 (参见 使用逻辑数据库访问数据 (页

7、Error! Not a valid link.) ) 。逻辑数据库 有定义如下 的层次结构 :最高层只 有一个节点 ,称为根节 点。每个节点 可以有一个 或几个分支 。每个节点 从其它节点 派生。必须在 ABAP/4 字典中定义 节点结构。 一般地,这 些结构都是 逻辑数据库 为进一步评 估而读取并 传递到 ABAP/4 报表的数据 库表格结构 。但是,使 用不带下面 数据库的 ABAP/4 字典有时也 是可能并有 用的。由于技术原 因,在逻辑 数据库结构 中节点数目 有上限(MAX) 。上限如下 计算:LEN = 结构中名称 的最大长度 (例如 7)。MAX = 1200 / LEN (例

8、如 1200 / 7 = 171)。ABAP/4 报表可以在 逻辑数据库 的结构中为 每个节点包 含 GET 语句。运行 时按层次结 构中所定义 的顺序执行 处理块。如果报表没 有为逻辑数 据库的每个 节点包含 GET 语句,则处 理块传递给 位于从根到 GET 语句指定节 点路径上的 所有节点。假定 LFA1 是根节点, LFBK 和 LFB1 是 LFA1 的分支,并 且 LFC1 是 LFB1 的分支。如果报表为 所有节点都 包含 GET 语句,则以 LFA1、 LFBK、 LFB1、 LFC1 的顺序执行 GET 事件。如果报表只 对 LFB1 包含 GET 语句,则处 理只传递到 L

9、FA1 和 LFB1。关于结构如 何影响选择 和数据库程 序的详细信 息,参见 创建和维护 逻辑数据库 (页 ) 。逻辑数据库 选择在逻辑数据 库中,可以 使用 SELECT-OPTIONS 和 PARAMETERS 语句在选择 屏幕上定义 输入字段。通过称为选 择包含程序 的特定包含 程序的帮助 可达此目的 。在每个 ABAP/4 报表中,可 以通过定义 报表特定选 择扩展逻辑 数据库选择 。所有报表 特定选择都 显示在特定 数据库选择 之后。生成报表的 选择平幕时 ,系统只考 虑数据库的 特定选择标 准和参数, 其相应表格 (由选择包 含程序中的 SELECT-OPTIONS 和 PARA

10、METERS 语句的 FOR 选项定义, 参见 编辑选择 (页 ) )由报表中 的 TABLES 语句声明。假定逻辑数 据库程序包 含下列行:SELECT-OPTIONS SLIFNR FOR LFA1-LIFNR. PARAMETERS PBUKRS LIKE LFB1-BUKRS FOR TABLE LFB1.选择标准 SLIFNR 链接到表格 LFA1, 参数 PBUKRS 链接到表格 LFB1。如果报表中 的 TABLES 语句声明 LFA1 但未声明 LFB1, 则在选择屏 幕上显示 SLIFNR, 但不显示 PBUKRS 。可以通过逻 辑数据库包 含程序中的 SELECTION-S

11、CREEN 语句格式化 选择屏幕( 例如,通过 定义框、按 钮、单选按 钮和空行 , 或者通过在 一行中写入 几个 PARAMETER) (参见 格式化选择标准 (页 Error! Not a valid link.) ) 。通过使用带 SELECT-OPTIONS 和 PARAMETERS 语句的附加 VALUE-REQUEST 和 HELP-REQUEST, 可以显示选 择屏幕字段 的可能输入 值和字段文 档(参见相 应关键字文 档) 。动态选择动态选择除 了允许用户 在逻辑数据 库选择包含 程序中已定 义的选择标 准之外,另 外还允许定 义进一步的 选择。由于 性能原因, 应该只为不 是

12、特定表格 的选择,在 报表中的 GET 事件过程中 ,而使用带 CHENK 语句的选择 标准(参见 有条件地离 开 GET 事件 (页 Error! Not a valid link.) ) 。否则, 直到数据库 访问之后才 执行选择。另一方面, 动态选择在 逻辑数据库 的数据库访 问期间已经 生效。要支 持数据库表 格 的动态选择 ,必须在逻 辑数据库的 选择包含程 序中指定下 列语句:SELECTION-SCREEN DYNAMIC SELECTIONS FOR TABLE .这种情况下 ,如果在报 表中使用表 格 ,则“动态 选择”按钮 显示在选择 屏幕上(参 见 SELECTION-S

13、CREEN 的关键字文 档) 。按该 按钮允许用 户为由逻辑 数据库定义 的字段输入 动态选择( 参见 选择标准与逻辑数据库 (页 Error! Not a valid link.) ) 。为 事件关键字 GET 选择数据时 ,逻辑数据 库在动态 WHERE 条件下使用 它们。在 ABAP/4 开发工作台 中,用户可 以以逻辑数 据库选择视 图的格式定 义动态选择 的字段列表 。这些视图 由其来源( CUStomer 的SAP 或者CUS )标识,逻 辑数据库名 称和带有此 处描述的选 择屏幕的功 能名称必须 总是STANDARD 。只有未创 建带源CUS 的选择视图 时,系统才 使用带源 S

14、AP的 选择视图。 这样,用户 可以为其所 需定义最好 的逻辑数据 库选择视图 。定义选择屏 幕版本逻辑数据库 选择屏幕( 屏幕号 1000 )有标准的 格式,其中 选择标准和 参数以声明 的顺序显示 在各行中。 系统为每个 没有在属性 中指定选择 屏幕的报表 自动生成该 屏幕。如果要为报 表消除某个 逻辑数据库 选择屏幕的 输入字段, 则可以在选 择包含程序 中定义选择 屏幕版本( 屏幕号小于 或等于 999 )并且将其 输入报表属 性。通过按 F4,可以 得到相关逻 辑数据库中 定义的选择 屏幕版本概 述。使用 SELECTION-SCREEN BEGIN|END OF VERSION 和

15、 SELECTION-SCREEN EXCLUDE 语句定义选 择屏幕版本 。后一语句 允许指定想 要从选择屏 幕版本中排 除的对象( 参见 编辑选择 (页 ) ) 。使用 SELECTION-SCREEN 语句,可以 定义其它格 式。如果报表属 性包含选择 屏幕版本号 ,则系统在 生成选择屏 幕时将该版 本号用作模 型。自动为 选择屏幕版 本生成屏幕 流逻辑并因 而不能修改 。特别不允 许删除特定 数据库选择 。选择屏幕版 本替代 3.0 版本之前所 使用的特定 用户选择屏 幕。关于选择屏 幕和 PARAMETERS、 SELECT-OPTIONS 以及 SELECTION-SCREEN 语

16、句的详细 信息,参见 使用选择屏幕 (页 Error! Not a valid link.) 。逻辑数据库 的数据库程 序逻辑数据库 的数据库程 序的名称符 合命名规则 SAPDB。 重要的是, 它包括系统 在运行 ABAP/4 报表时调用 的子程序集 合。报表中带事 件关键字的 子程序之间 的相互作用 ,在 逻辑数据库 和 ABAP/4 报表 (页 ) 中进行了描 述。逻辑数据库 的结构决定 PUT 语句的行为 ,该语句在 子程序 PUT_ 中很重要( 参见下面) 。逻辑数据库 程序通常包 含 定义子程序 (页 Error! Not a valid link.). 中描述的下 列子程序, 并

17、且都使用 FORM 语句定义。FORM INIT在显示选择 屏幕之前调 用一次。FORM PBO每次刷新选 择屏幕之前 调用。FORM PAI用户每次在 选择屏幕上 按 ENTER 时调用。系统将参数 FNAME 和 MARK 传递给子程 序,这些参 数自动定义 和填充。- FNAME 包含选择屏 幕上选择标 准或参数的 名称。- MARK 说明用户所 做的选择:MARK = SPACE 意味着用户 已经输入简 单的单值或 范围选择。MARK = * 意味着用户 已经在“多 重选择”屏 幕上制作条 目。FORM PUT_ 以逻辑数据 库结构决定 的顺序调用 子程序。使 用 SELECT 语句读

18、取节 点 的数据,并 且 PUT 语句将程序 流定向到报 表中合适的 GET 语句中。PUT 语句是该子 程序的主语 句:语法PUT .只能在逻辑 数据库子程 序中使用 PUT 语句,该逻 辑数据库包 含以 PUT_ 开头的名称 的节点 。PUT 语句根据逻 辑数据库的 结构定向程 序流。读取 深度由有关 报表中的 GET 语句决定。 首先,为根 节点执行子 程序 PUT_。 PUT 语句然后如 下定向程序 流:1. 如果 数据库程序 包含子程序 AUTHORITY_CHECK_,则首先 执行该子程 序。2 PUT 语句试图触 发报表中的 GET 事件,即如 果存在相关 GET 语句,则执 行

19、合适的代 码块。3. PUT 语句将程序 流定向到- 下一节 点的子程序 上,前提是 节点的 GET 语句在报表 中相关分支 的较低级别 上。- 相同级 别节点的子 程序上,前 提是先前节 点分支到此 节点并且在 报表中存在 该节点的 GET 语句。步骤 1 时子程序中 的 PUT 再次起动。 如果它到达 有 GET 语句的报表 中分支的最 低层节点的 子程序,则 不再分支, 但继续处理 当前子程序 。当处理完 整个 PUT_ 子程序时, 程序流返回 将其分支到 子程序 PUT_ 处的 PUT 语句。4. 从下 级子程序 PUT_ 返回后,如 果存在的话 ,PUT 语句分支到 报表的 GET

20、LATE 语句。在逻辑数据 库结构中, LFB1 是 LFA1 的分支。假定在选择 包含程序中 定义如下选 择标准:SELECT-OPTIONS: SLIFNR FOR LFA1-LIFNR, SBUKRS FOR LFB1-BUKRS. 将读取数据 库程序的某 节:FORM PUT_LFA1. SELECT * FROM LFA1 WHERE LIFNR IN SLIFNR. PUT LFA1. ENDSELECT. ENDFORM. FORM PUT_LFB1. SELECT * FROM LFB1 WHERE LIFNR = LFA1-LIFNR. AND BUKRS IN SBUKRS

21、. PUT LFB1. ENDSELECT. ENDFORM. 链接到逻辑 数据库的报 表将包含:GET LFA1.WRITE LFA1-LIFNR.GET LFB1.WRITE LFB1-BUKRS.在该示例中 ,系统在选 择处理的开 始时调用过 程 PUT_LFA1。 PUT LFA1 语句将程序 流定向到报 表中的GET LFA1 语句处理块 上。当执行 该块时, PUT LFA1 转到子程序 PUT_LFB1, 该子程序将 程序流定向 到报表中的 GET LFB1 语句。如果 LFB1 是读取的最 后节点,则 用 PUT_LFB1 中的 SELECT 循环恢复处 理。否则, 程序流移到

22、 下一节点的 PUT_ 子程序上。 在最后节点 的 SELECT 循环末尾、下一级开始 处节点的 SELECT 循环中恢复 处理。下列图象显 示程序流:在该示例中 ,PUT 语句不分支 到授权检查 子程序。FORM AUTHORITY_CHECK_ 由 PUT 语句自动调 用。在该子 程序中,可 以从逻辑数 据库结构中 为合适的节 点 指定授权检 查。FORM PUT_MATCHCODE 在带有选定 匹配码记录 的匹配码选 择的情况下 调用。 是逻辑数据 库的名称。从该子程序 ,可以使用 匹配码记录 从根节点 读取相关项 。可以用 PUT 调用报表中 的处理。FORM BEFORE_EVENT

23、, AFTER_EVENT在事件之前 或之后调用 ,其名称在 参数 EVENT 中传递。用如下方式 给字段 EVENT 赋值:EVENT = START-OF-SELECTION.然后可以在 BEFORE_EVENT 和 AFTER_EVENT 子程序的列 表中使用它 。FORM _VAL, _VAL, -LOW_VAL, -HIGH_VAL 当用户按 F4 以获取参数 输入字段的 可能条目列 表或者为了 获得选择屏 幕上的选择 标准 (都是特定 数据库)时 调用。FORM _HLP, _HLP, -LOW_HLP, -HIGH_HLP 当用户按 F1 以获取参数 输入字段的 可能项的帮 助或

24、者为了 要获得选择 屏幕上的选 择标准 (都是特定 数据库)时 调用。关于该主题 的详细信息 ,参见:创建和维护 逻辑数据库 (页 ) 带附加 VALUE-REQUEST 和 HELP-REQUEST的 SELECT-OPTIONS 关键字文档带附加AS MATCHCODE STRUCTURE、 VALUE-REQUEST 和 HELP-REQUEST的 PARAMETERS 关键字文档逻辑数据库 和 ABAP/4 报表生成 ABAP/4 报表时的逻 辑数据库每个 ABAP/4 报表都链接 到报表属性 中指定的逻 辑数据库上 。该逻辑数 据库将影响 报表的生成 :生成的选 择屏幕包含 逻辑数据

25、库 选择(选择 标准和参数 )和报表。在选择屏 幕上,只显 示报表中与 数据评估相 关的特定数 据库选择。链接到逻辑 数据库的报 表的运行行 为当执行链接 到逻辑数据 库的报表时 ,系统以特 定顺序调用 一系列处理 块(参见 ABAP/4 处理程序 (页 Error! Not a valid link.) ) 。某些处 理在报表中 编码而某些 则在逻辑数 据库程序中 编码。在数据库程 序 SAPDB 中执行特定 数据库子程 序(参见 逻辑数据库 的数据库程 序 (页 ) )。在 ABAP/4 报表中执行 事件的处理 块(关于事 件和示例的 详细信息, 参见 事件及其事件关键字 (页 Error

26、! Not a valid link.) )。下列列表包 含系统为链 接到逻辑数 据库 的 ABAP/4 报表而执行 的处理步骤 。在每种情 况下,ABAP/4 程序代码行 指定属于这 些步骤的处 理块(子程 序和事件) 。1. 在显 示选择屏幕 之前初始化 (例如,关 键数据的默 认值) PBO。- 子程序 :FORM INIT 在第一次显 示选择屏幕 之前调用一 次该子程序 。FORM PBO.每次刷新选 择屏幕时调 用该子程序 (在用户按 ENTER 之后)。- 事件:INITIALIZATION. 在第一次显 示选择屏幕 之前发生该 事件(参见 INITIALIZATION (页 Er

27、ror! Not a valid link.) )。AT SELECTION-SCREEN OUTPUT.该事件在每 次刷新选择 屏幕时发生 (参见 选择屏幕的 PBO (页 Error! Not a valid link.) )。2. 系统 显示选择屏 幕,用户在 输入字段中 输入数据。3. 当用 户在选择屏 幕上按 F4 或 F1 时,显示可 能的条目和 帮助。- 子程序 :FORM _VAL. FORM _VAL. FORM -LOW_VAL. FORM -HIGH_VAL. 如果用户请 求特定数据 库参数 的可能条目 (F4) 列表或者选 择标准 ,则根据需 要调用子程 序。如果用户请

28、 求这些参数 的帮助 (F1) ,则调用以 _HLP 而不是 _VAL 结尾的子程 序。- 事件:AT SELECTION-SCREEN ON VALUE-REQUEST FOR .AT SELECTION-SCREEN ON VALUE-REQUEST FOR -LOW. AT SELECTION-SCREEN ON VALUE-REQUEST FOR -HIGH. 如果用户请 求特定数据 库参数 的可能条目 (F4) 列表或者选 择标准 , 则事件发生 (参见 创建输入值 列表 (页 Error! Not a valid link.) )。如果用户请 求这些参数 的帮助 (F1), 则带附

29、加 ON HELP-REQUEST 的事件发生 而不是 ON VALUE-REQUEST (参见 创建输入字段的帮助 (页 Error! Not a valid link.) )。4. PAI, 系统检查用 户输入是否 正确、完整 和可行,还 检查用户授 权。如果检 测到错误, 则导出个与 用户间的对 话并要求再 次输入某些 条目,以便 矫正错误。- 子程序 :FORM PAI USING FNAME MARK.系统决定并 填充字段 FNAME 和 MARK。FNAME 包含选择屏 幕上的选择 标准或参数 的名称。如果 MARK = SPACE, 则用户已经 输入简单单 值或范围选 择。如果

30、MARK = *,则 用户已经在 “多重选择 ”屏幕上输 入选择。联合使用 FNAME = * 和 MARK = ANY, 则可以在用 户选择 “确 定”后立即 检查所有条 目。- 事件:AT SELECTION-SCREEN ON .在处理特定 输入字段之 后的事件。 必须在报表 中指定字段 ( 参见 处理特殊输 入字 (页 Error! Not a valid link.) )。AT SELECTION-SCREEN ON END OF .在处理多重 选择之后的 事件。必须 在报表中指 定字段 (参见 处理多重选择 (页 Error! Not a valid link.) )。AT SEL

31、ECTION-SCREEN.用户通过选 择“确定” 显示整个选 择屏幕之后 的事件。参 见 AT SELECTION-SCREEN (页 Error! Not a valid link.).。5. 逻辑 数据库中的 数据选择和 ABAP/4 报表中的处 理- 子程序 :FORM PUT_.逻辑数据库 读取节点 的选择。- 事件:START-OF-SELECTION.在该事件中 ,ABAP/4 报表执行准 备工作(例 如从文件输 入数据)。 参见 START-OF-SELECTION (页 Error! Not a valid link.) 。GET LATE.报表处理以 逻辑数据库 结构决定的

32、 顺序读自 的数据(参 见 GET (页 Error! Not a valid link.) and GET LATE (页 Error! Not a valid link.)。END-OF-SELECTION.在该事件中 ,ABAP/4 报表执行结 束操作(例 如,计算总 计,向文件 输出数据) 。参见 END-OF-SELECTION (页 Error! Not a valid link.) 。假定 TABLE1 是根节点并 且 TABLE2 是其在逻辑 数据库中仅 有的子程序 。这种情况 下,数据选 择的处理步 骤嵌套和处 理如下:1. START-OF-SELECTION. 报表中的准

33、 备步骤。2. FORM PUT_TABLE1.在数据库程 序中循环读 取 TABLE1 3. GET TABLE1.报表中 TABLE1 的数据处理4. FORM PUT_TABLE2.在数据库程 序中循环读 取 TABLE2 5. GET TABLE2.报表中 TABLE2 的数据处理6. GET TABLE1 LATE.结束 TABLE1 循环,报表 中的数据处 理7. END-OF-SELECTION.结束报表中 的步骤。子程序PUT_MATCHCODEBEFORE_EVENTAFTER_EVENT在程序流中 由系统在合 适点处调用 。根据要作的 授权检查, 可以将子程 序 AUTHO

34、RITY_CHECK_ 放置在报表 中(参见 逻辑数据库 的授权检查 (页 ) ) 。关于数据库 程序的详细 信息,参见 编辑数据库 程序 (页 ) 。逻辑数据库 的授权检查通常,可以 在下列数据 库程序的子 程序或者报 表的处理块 中包括授权 检查:数据库程 序中的子程 序:- PAI- AUTHORITY_CHECK_报表中的 事件关键字 :- AT SELECTION-SCREEN- AT SELECTION-SCREEN ON - AT SELECTION-SCREEN ON END OF - GET 将授权检查 放置在数据 库程序还是 放在报表中 取决于:逻辑数据 库的结构; 例如,

35、如果 在运行时读 取包含公司 代码字段的 行,则应该 只检查公司 代码授权。性能;例 如在 SELELCT 循环中不执 行重复检查 。在任何情况 下,数据库 访问和应用 逻辑的分离 允许在逻辑 数据库程序 中集中地编 码所有授权 。这使维护 大的编码系 统更加容易 。逻辑数据库 的性能因为在所有 有关的 ABAP/4 报表中更改 逻辑数据库 将立即生效 ,所以通过 集中优化可 以提高程序 库中的不同 对象的响应 时间。通过允许用 户精确指定 系统从数据 库中读取哪 个表格条目 可以获得最 大的性能提 高。为此, 可以在数据 库程序中使 用下列技术 :选择标准 和参数(参 见 使用选择屏幕 (页

36、 Error! Not a valid link.) ),可能带 默认值和值 列表。动态选择 (参见 逻辑数据库 选择 (页 ) )。匹配码选 择(参见 编辑匹配码 选择 (页 ) )。查看从数 据库读取的 条目或者将 其存储在内 表中。另外,应该 在早期进行 授权检查, 即尽可能在 选择屏幕处 理期间而不 是等到数据 选择处理期 间。因为它们依 赖于读取的 数据,因此 没有优化的 步骤规则。 试图优化响 应时间时应 该知道以下 各点:在不同级 别结构的表 格内容之间 的数字关系 十分重要。如果某一级 别结构的数 据库表格的 某行包括下 一级别数据 库表格的某 行(情况 A ),则其它 优化可

37、能对 于比例 1:100 或者 1:1000 更有意义( 情况 B )。在情况 A 中,通过使 用数据库视 图可以提高 响应时间( 关于视图的 详细信息,参见文档 ABAP/4 词典 (页 Error! Not a valid link.) )。在情况 B 中,可以使 用内表。首 先从数据库 中将数据读 到内表中( 参见 将数据恋 工作区中 (页 Error! Not a valid link.) ),然后在 逻辑数据库 中通过 LOOP/ENDLOOP 处理内表。在情况 B 中,使用光 标处理选择 行也很有用 (参见 使用光标从 数据库表中 寥 (页 Error! Not a valid l

38、ink.) )。一些 ABAP/4 报表只参阅 带 GET 语句的层次 结构的一部 分,而其它 报表访问结 构中的所有 节点。在这 种情况下, 提高单个报 表性能有下 列选择:- 在逻辑 数据库程序 中,使用表 格 GET_EVENTS。 使用逻辑数 据库生成报 表之后,对 于结构的每 个节点,该 报表表示报 表中每条 GET 语句是否发 生(参见 编辑数据库 程序 (页 ) )。- 通过在 选择 INCLUDE 中使用SELECTION-SCREEN FIELD SELECTION FOR TABLE . 语句,可以 为字段选择 指定逻辑数 据库中的数 据库表格 (参见SELECTION-S

39、CREEN 的关键字文 档)。在报 表中,可以 使用合适的 GET 语句(参见 外在地指 数据库表的 字 (页 Error! Not a valid link.) )。逻辑数据库 示例假定逻辑数 据库 HKS 有下列结构 :假定在选择 包含程序中 定义下列选 择标准:SELECT-OPTIONS: SLIFNR FOR LFA1-LIFNR, SBUKRS FOR LFB1-BUKRS, SGJAHR FOR LFC1-GJAHR, SBELNR FOR BKPF-BELNR. 下面是完整 的数据库程 序:*-* DATABASE PROGRAM OF THE LOGICAL DATABASE

40、 HKS *-*PROGRAM SAPDBHKS DEFINING DATABASE HKS. TABLES: LFA1, LFB1, LFC1, BKPF. *-* Initialize selection screen (process before PBO) *-*FORM INIT.ENDFORM. “INIT *-* PBO of selection screen (process always after ENTER) *-*FORM PBO. ENDFORM. “PBO*-* PAI of selection screen (process always after ENTER)

41、 *-*FORM PAI USING FNAME MARK. CASE FNAME. WHEN SLIFNR. WHEN SBUKRS. WHEN SGJAHR. WHEN SBELNR. ENDCASE. ENDFORM. “PAI*-* Call event GET LFA1 *-*FORM PUT_LFA1. SELECT * FROM LFA1 WHERE LIFNR IN SLIFNR. PUT LFA1. ENDSELECT. ENDFORM. “PUT_LFA1*-* Call event GET LFB1 *-*FORM PUT_LFB1. SELECT * FROM LFB1

42、 WHERE LIFNR = LFA1-LIFNR AND BUKRS IN SBULRS. PUT LFB1. ENDSELECT. ENDFORM. “PUT_LFB1 *-* Call event GET LFC1 *-*FORM PUT_LFC1. SELECT * FROM LFC1 WHERE LIFNR = LFA1-LIFNR AND BUKRS = LFB1-BUKRS AND GJAHR IN SGJAHR. PUT LFC1. ENDSELECT. ENDFORM. “PUT_LFC1 *-* Call event GET BKPF *-*FORM PUT_BKPF. S

43、ELECT * FROM BKPF WHERE BUKRS = LFB1-BUKRS AND BELNR IN SBELNR AND GJAHR IN SGJAHR. PUT BKPF. ENDSELECT. ENDFORM. “PUT_BKPF PROGRAM 语句包含附 加 DEFINING DATABASE HKS,它 将数据库程 序定义为属 于逻辑数据 库 HKS。用生成适当 表格工作区 的 TABLES 语句声明结 构的节点。 因为这些表 格工作区由 数据库程序 和相关的报 表共享,因 此它们变为 在逻辑数据 库和报表之 间数据传输 的界面。子程序 INIT 和 PBO 初始化选择

44、屏幕。子程序 PAI 对选择屏幕 上的用户输 入进行授权 检查。也可 能进行可行 性和值范围 检查。如果 检查产生负 输出,则出 现适当的错 误对话框并 且相关字段 再次准备接 收输入。根据由用户 输入的选择 标准 PUT_ 子程序读取 数据库表格 并且在报表 中调用相关 处理块。调 用子程序的 顺序由逻辑 数据库的结 构决定。下图显示数 据库结构决 定的程序流 :创建和维护 逻辑数据库创建或维护 逻辑数据库 的事务是 SE36 或者 SLDB。 要进行该进 程,请选择 “工具 - ABAP/4 工作台 - 开发 - 编程环境 - 逻辑数据库 ”。随后出现如 下显示的初 始屏幕:在“逻辑数 据

45、库”字段 中,输入逻 辑数据库的 名称。要通过“显 示”或“更 改”显示或 更改逻辑数 据库,请选 择逻辑数据 库子对象。 要创建逻辑 数据库,请 选择“创建 ”下列主题介 绍如何创建 和维护逻辑 数据库:创建逻辑数 据库创建逻辑数 据库时,系 统将承担大 部分工作:通过在图 形编辑器中 定义其结构 ,可以定义 逻辑数据库 的最重要的 特征。定义结构 后,系统自 动建议选择 包含程序。最后,系 统使用结构 和选择生成 数据库程序 。要全部自动 生成 ABAP/4 语句,应该 以下列次序 处理子组件 :要创建新逻 辑数据库, 在初始屏幕 上选择“创 建” 。1. 在随 后的对话框 中,输入短 文

46、本,用“ 创建”确认 并指定开发 级别(关于 开发级别的 详细信息, 参见 指 绦蚴 性 (页 Error! Not a valid link.) )。如果要更改 短文本或者 以其它语言 维护,可以 选择“细节 - 短文本”以 后再完成此 目的。2. 指定 结构的根节 点,例如用“创建” 确认。3. 逻辑 数据库现在 具有单个节 点结构。可以按 更改结构 (页 ) 中的描述扩 展该结构。4. 保存 该结构。系 统在此基础 上自动建议 选择包含程 序。5. 选择 “转向 - 选择 ”并且按 编辑选择 (页 ) 中的描述维 护包含程序 。6. 保存 选择并且选 择“转向 - 数据库程序 ”。确认下 列对话框:然后系统根 据结构和选 择条件生成 数据库程序 。已经定义 了所有必须 的子程序并 且也生成了 SELECT 语句的大部 分 WHERE 条件。按 编辑数据库

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报