簡體   English   中英

ABAP:在 Popup1 中打開 Popup2 - 關閉 Popup2 應返回到 Popup1

[英]ABAP: Open Popup2 in Popup1 - Closing Popup2 should return to Popup1

我正在打開一個 Popup(1) - Screen_0300

CASE sy-ucomm.
  WHEN 'POPUP1'.
    CALL SCREEN 0300 STARTING AT 10 08 ENDING AT 70 15.
ENDCASE.

在此 Popup 中,我調用另一個屏幕 Popup(2) - Screen_0400。

MODULE user_command_0300 INPUT.
  CASE sy-ucomm.
    WHEN 'POPUP2'.
      CALL SCREEN 0400 STARTING AT 10 08 ENDING AT 70 15.
  ENDCASE.
ENDMODULE.

現在,當我關閉 Popup(2) 時,我想返回到 Popup(1)。 目前兩個彈出窗口同時關閉。 我已經嘗試使用Leave to ScreenSet Screen在 Popup(2) 的 PAI 中調用 Popup(1) 。 有什么辦法可以做到這一點?

要使用CALL SCREEN保留顯示的屏幕,請在 PAI ( MODULE... INPUT ) 執行期間使用SET SCREEN 0 ,程序將在語句CALL SCREEN之后繼續。

0是離開當前“屏幕調用序列”的特殊值。

我自己找到了答案,並將其發布,以便其他人可以更快地找到答案。 這似乎是與相同的問題。

用以下方法修復它:

data next_screen type sy-dynnr.
CASE sy-ucomm.
 WHEN 'POPUP1'.
  next_screen = '0300'.
  while next_screen is not INITIAL.
  CALL SCREEN next_screen STARTING AT 10 08 ENDING AT 70 15.
  endwhile.
ENDCASE.

在第二個彈出窗口中:

MODULE user_command_0300 INPUT.
  CASE sy-ucomm.
    WHEN 'CANCEL' OR 'ENTER'
      CLEAR next_screen.
    WHEN 'POPUP2'.
      CALL SCREEN 0400 STARTING AT 10 08 ENDING AT 70 15.
  ENDCASE.
ENDMODULE.

這樣,每當使用 sy-ucomm CANCELEXIT關閉第一個 Popup 時,next_screen 將被清除並且主程序再次成為焦點。 否則 next_screen 一直是 300 並且會一直被調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM