有没有办法关闭 SAP ABAP 中嵌套的弹出窗口并返回上一个?

问题描述

所以我有一个 ABAP 模块池程序,我总共创建了 4 个不同的屏幕(屏幕 101、102、103、104)。虽然屏幕 101 是我的主屏幕,但其他三个按顺序作为弹出窗口出现,所以从 101 开始,一个弹出窗口将屏幕 102 向前推进,从那里弹出窗口将 103 向前推进等等。我的问题是当我最终在弹出窗口 104 中时,我想查看一些正确执行的数据,然后退出此弹出窗口并返回到包含屏幕 103 的上一个。 我找不到任何可以解决我的问题的语句.我试过“离开屏幕”、“将屏幕设置为 0”、“离开程序”、“离开屏幕 0”以及几乎任何类似的东西,但大多数情况下发生的都是它回到屏幕 103但是在同一个弹出窗口中没有关闭它,所以我基本上最终有两个弹出窗口预览同一个屏幕(103)。有人知道我应该如何解决这个问题吗?希望我说清楚并提前致谢。

解决方法

您需要在父屏幕的逻辑中实现某种控制器。没有办法简单地更改弹出窗口的内容,您需要使用 CALL SCREEN 将其打开 ... 当您想更改内容时,您需要使用 LEAVE TO SCREEN 0 关闭它。在关闭弹出窗口之前,您可以将附加信息存储在全局变量(或用户推荐)中,以便控制器知道接下来需要显示哪个屏幕。然后使用另一个 CALL SCREEN 显示下一个屏幕。

描述该方法的一个非常简单的示例:主 dynpro 中的控制器可能如下所示:

* This needs to be a global variable!
DATA next_screen TYPE SY-DYNNR VALUE '0101'.

...

WHILE next_screen IS NOT INITIAL.
 CALL SCREEN next_screen STARTING AT 3 3.
ENDWHILE.

最初这会将屏幕 101 显示为弹出窗口。当弹出窗口 101 决定跳转到屏幕 102 时,它执行以下代码:

next_screen = '0102'.
LEAVE TO SCREEN 0.

关闭弹窗使用

CLEAR next_screen.
LEAVE TO SCREEN 0.