是否有办法关闭SAP ABAP中嵌套的弹出窗口并返回到前一个?



所以我有一个ABAP模块池程序,我总共创建了4个不同的屏幕(屏幕101,102,103,104)。虽然屏幕101是我的主屏幕,但其他3个屏幕会以弹出窗口的形式依次出现,所以从101开始,弹出窗口会带动屏幕102,从101开始,弹出窗口又会带动103,以此类推。我的问题是,当我结束在弹出窗口104,我想要查看一些数据,这是正确执行,然后退出这个弹出窗口,回到前一个,其中包含屏幕103。我找不到任何能解决我的问题的表述。我试过"离开屏幕","将屏幕设置为0","离开程序","离开屏幕0";以及类似的事情,但大多数情况下,它会回到屏幕103,但在同一个弹出窗口内,没有关闭它,所以我基本上会用两个弹出窗口预览同一个屏幕(103)。有人知道我该怎么做吗?希望我能说清楚,提前谢谢你。

需要在父屏幕的逻辑中实现某种类型的控制器。没有办法简单地改变一个弹出框的内容,你需要使用CALL SCREEN打开它…当你想改变内容时,你需要使用LEAVE to SCREEN 0关闭它。在关闭弹出窗口之前,您可以在全局变量(或用户推荐)中存储其他信息,以便控制器知道下一步需要显示哪个屏幕。下一个屏幕使用另一个呼叫屏幕显示。

一个非常简单的例子来描述这种方法:主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.

最新更新