ABAP 子屏幕教程:调用子屏幕 SAP
在阅读本教程之前,请先确保您了解对话程序是什么……
呼叫子屏幕
- 子屏幕是显示在另一个(“主”)屏幕的某个区域中的独立屏幕。
- 子屏幕允许您在运行时将一个屏幕嵌入另一个屏幕。您可以在主屏幕上包含多个子屏幕。
- 术语“子屏幕”既适用于您嵌入的屏幕,也适用于主屏幕上放置该屏幕的区域。本教程介绍子屏幕区域。通过 SE51 事务创建的实际屏幕(如果在屏幕属性中定义)称为子屏幕屏幕。
- 当您使用子屏幕时,嵌入屏幕的流程逻辑也嵌入在主屏幕的流程逻辑中。因此,在屏幕上使用子屏幕就像在 ABAP 程序.
要使用子屏幕,您必须遵循三个简单的步骤
- 定义屏幕上的子屏幕区域
- 定义合适的子屏幕
- 将子屏幕屏幕包含在子屏幕区域中。
另外,还需要调整子屏幕和主屏幕的框架。您需要在字段名称字段中为其命名。
此外,您还需要调整子屏幕内的字段,使它们显示在主屏幕中。如果子屏幕被定义为大于主屏幕中的可用区域,则只有适合可用区域的子屏幕部分可见。该区域始终从屏幕的左上角测量。因此,在定义子屏幕区域和创建子屏幕时应格外小心。
例
例如,这里我们在主屏幕上定义了两个子屏幕区域,并将两个不同的子屏幕附加到相应的区域。每当调用主屏幕时,都会调用主屏幕的 PBO。但在显示之前,还会调用主屏幕上附加有子屏幕区域的每个屏幕的 PBO。
您可以使用 CALL SUBSCREEN 语句在主屏幕的流程逻辑中包含子屏幕屏幕。
要在主屏幕的子屏幕区域中包含子屏幕屏幕并调用其 PBO 流逻辑,请在主屏幕的 PBO 事件中使用以下语句:
PROCESS BEFORE OUTPUT. CALL SUBSCREEN <area> INCLUDING [<prog>] <dynp>.
此语句为子屏幕分配编号到称为。您还可以指定定义子屏幕屏幕的程序(可选)。如果您未明确指定程序,系统将在与主程序相同的 ABAP 程序中查找子屏幕屏幕。如果未找到相应的子屏幕屏幕,则会发生运行时错误。子屏幕屏幕的 PBO 流逻辑也包含在同一点。这可以调用定义子屏幕屏幕的 ABAP 程序的 PBO 模块。在子屏幕 PBO 的末尾,程序中的全局字段将传递给子屏幕屏幕中任何同名的屏幕字段。子屏幕屏幕的 PBO 流逻辑本身可以包括进一步的子屏幕。
名字子屏幕区域的名称必须直接输入,不带引号。您可以指定和可以是文字或变量。如果使用变量,则必须在 ABAP 程序中声明并填充同名变量。屏幕编号必须为 4 个字符长。如果没有为区域分配子屏幕,则该区域将保持为空。
要调用子屏幕的PAI流逻辑,请在主屏幕的PAI流逻辑中使用以下语句:
PROCESS AFTER INPUT. CALL SUBSCREEN <area>.
该语句包含子屏幕区域所包含的子屏幕的PAI流逻辑在 PBO 事件中。这可以调用定义子屏幕的 ABAP 程序的 PAI 模块。当触发 PAI 事件时,或者在子屏幕的 PAI 流逻辑中的相应 FIELD 语句处,数据在子屏幕和 ABAP 程序中同名字段之间传输。
要记住的要点
- 屏幕内子屏幕元素的名称应该是唯一的
- 您不应将 OK_CODE 或 FCODE 附加到子屏幕。主屏幕本身的 OK_CODE 是子屏幕的 OK_CODE
- 子屏幕不能有任何包含 SET TITLEBAR、SET PF-STATUS、SET SCREEN、LEAVE SCREEN 或 LEAVE TO SCREEN 的对话框模块。这将导致运行时错误。
- 您需要在主屏幕的流程逻辑(PBO 和 PAI)中调用它。
- CHAIN..ENDCHAIN 和 LOOP ENDLOOP 语句中不允许使用 CALL SUBSCREEN
- 不能有 AT EXIT-COMMAND 模块
- 您使用的字段是全局字段。它们必须在顶部包含中声明
- 如果使用其他屏幕的子屏幕 对话程序 除非您添加特定代码,否则数据传输不会发生。