这是一个未记录的功能,但在模态对话框(弹出窗口)中,关闭弹出窗口的右上角按钮被分配了F12
键,因此您必须将此键分配给功能代码并将其作为任何其他功能代码处理。
分步程序:
1)创建ABAP程序(事务码SE38
或SE80
)
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)关闭模态对话框: