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

Is there a way to close a nested pop up window in SAP ABAP and go back to the previous one?

所以我有一个 ABAP 模块池程序,我总共创建了 4 个不同的屏幕(屏幕 101、102、103、104)。虽然屏幕 101 是我的主屏幕,但其他三个按顺序弹出 windows,因此从 101 弹出 window 将屏幕 102 向前,从那里弹出 window 将 103 向前推进等。我的问题是,当我最终进入弹出窗口 window 104 时,我想查看一些正确执行的数据,然后退出此弹出窗口 window 并继续回到前一个,其中包含屏幕 103。我找不到任何解决我的问题的语句。我已经尝试过“离开屏幕”、“将屏幕设置为 0”、“离开程序”、“离开屏幕 0”以及几乎所有类似的操作,但大多数情况下都是返回到屏幕 103但是在同一个弹出窗口 window 中没有关闭它,所以我基本上以两个弹出窗口 windows 预览同一个屏幕 (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 显示为弹出窗口。当popup 101决定跳转到屏幕102时,它执行下面的代码:

next_screen = '0102'.
LEAVE TO SCREEN 0.

关闭弹窗使用

CLEAR next_screen.
LEAVE TO SCREEN 0.