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