如何把选择屏幕放到标准屏幕上

来源:互联网 发布:java gc finalize 编辑:程序博客网 时间:2024/05/30 04:55

原帖:http://blog.itpub.net/634491/viewspace-151161

我们都用过选择屏幕和标准屏幕,应该都有想过在标准屏幕上使用选择屏幕的功能吧?如果自己在标准屏幕上实现像选择屏幕上那样的输入功能太麻烦了。其实我们可以把选择屏幕放到标准屏幕上去,这样很方便就能实现我们想要的功能了。
    首先,要声明一个SUBSCREEN类型的选择屏幕,这个很重要。
        SELECTION-SCREEN BEGIN OF SCRENN 1001 AS SUBSCREEN.
          SELECT-OPTIONS: p_matnr FOR mara-matnr.
        SELECTION-SCREEN END OF SCREEN 1001.

    然后,创建一个标准屏幕,并在屏幕上放置一个子屏幕区域(Subscreen Area),命名为subsel(可以自行命名)。然后在标准屏幕的PBO中添加一行代码
        CALL SUBSCREEN subsel INCLUDING sy-repid subscr.
    在PAI中添加一行代码
        CALL SUBSCRENN subsel.

    在这里要注意:在PBO中CALL SUBSCREEN语句最后的选择屏幕号一定要使用变量,不能直接输入屏幕编号,否则会出现错误。
        CALL SUBSCREEN subsel INCLUDING sy-repid '1001'.  "这样是会出错的

    定义一个变量,设定值为选择屏幕的编号就可以了。
        DATA: subscr TYPE sy-dynnr VALUE '1001'.

    定义为SUBSCREEN的选择屏幕,所有发生的操作,都会在标准屏幕的PAI中那行CALL SUBSCREEN subsel时传回到选择屏幕的事件处理程序中,在选择屏幕上输入的值也会传递到相应的屏幕参数,但是定义为SUBSCREEN的选择屏幕,不会产生 START-OF-SELECTION事件,只会产生AT SELECTION-SCREEN事件,可以在AT SELECTION-SCREEN事件中进行处理。
        AT SELECTION-SCREEN.
          IF sy-dynnr = '1001'.
            "处理语句
          ENDIF.
    其他AT SELECTION-SCREEN事件也能被处理,如AT SELECTION-SCREEN OUTPUT等。

0 0