SAP:模态对话框没有反应

时间:2011-09-04 19:51:59

标签: screen modal-dialog sap abap

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

我称之为弹出窗口的屏幕,不包含任何按钮,也不包含任何硬编码按钮。我有什么想法吗?

我也喜欢它返回的屏幕,要刷新(所以它再次加载PBO)。我该怎么做?

修改

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

2 个答案:

答案 0 :(得分:1)

您应该在弹出窗口的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.

答案 1 :(得分:0)

这是一个未记录的功能,但是在模式对话框(弹出窗口)中,用于关闭弹出窗口的右上按钮分配有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),然后激活该功能代码(按钮“功能代码”): enter image description here

4)测试

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

enter image description here