1

我正在尝试将屏幕称为弹出窗口。屏幕类型设置为Modal dialog box,我可以调用屏幕,但无法关闭它。当我点击小十字架时,什么也没有发生。下一个屏幕设置为0

我作为弹出窗口调用的屏幕不包含任何按钮,也没有任何硬编码的按钮。任何想法我做错了什么?

我还希望它返回的屏幕被刷新(因此它再次加载 PBO)。我怎么做?

这是代码:

MODULE werkende_knoppen_subscreen INPUT.
  CASE ok_code.
    WHEN 'X'.
      LEAVE TO SCREEN 0.
  ENDCASE.
ENDMODULE.
4

2 回答 2

2

您应该在弹出窗口的 PAI 部分检查'EXIT'(或者,在您的情况下是自定义关闭按钮)用户命令。'X'例如:

MODULE user_command_0010 INPUT.
  ok = sy-ucomm.
  CLEAR sy-ucomm.
  CASE ok.
    WHEN 'EXIT' OR 'X'.
      LEAVE TO SCREEN 0.
  ENDCASE.
ENDMODULE.
于 2011-09-05T11:20:46.283 回答
1

这是一个未记录的功能,但在模态对话框(弹出窗口)中,关闭弹出窗口的右上角按钮被分配了F12键,因此您必须将此键分配给功能代码并将其作为任何其他功能代码处理。

分步程序:

1)创建ABAP程序(事务码SE38SE80

REPORT.

CALL SCREEN 100 STARTING AT 10 10 ENDING AT 60 20.

MODULE status_0100 OUTPUT. " <=== called "before output"
  SET PF-STATUS '0100'.    " <=== choose the GUI status
ENDMODULE.

MODULE user_command_0100 INPUT. " <=== called "after input" (after user action)
  IF sy-ucomm = 'CANCEL'.       " <=== the function code you chose in your GUI status
    SET SCREEN 0.               " <=== 0 is a special number which ends "CALL SCREEN"
  ENDIF.
ENDMODULE.

注:SET SCREEN 0是关闭对话框(0意思是“当前dynpro序列结束”);如果您有一个复杂的屏幕,您也可以使用LEAVE TO SCREEN(相当于 2 个语句 SET SCREEN + LEAVE SCREEN)。

2)创建画面0100(交易代码SE51或双击0100后面CALL SCREEN

画面类型:模态对话框

流程逻辑:

PROCESS BEFORE OUTPUT.
  MODULE status_0100.

PROCESS AFTER INPUT.
  MODULE user_command_0100.

3)创建GUI状态0100(交易代码SE41或双击0100后面SET PF-STATUS

状态类型:对话框

将 F12 键分配给任意功能代码(我选择名称CANCEL),并激活此功能代码(按钮“功能代码”): 在此处输入图像描述

4) 测试

运行程序,您现在可以单击右上角的按钮(如果您愿意,也可以按 F12)关闭模态对话框:

在此处输入图像描述

于 2019-07-04T13:57:03.687 回答