控制屏幕流程_第1页
控制屏幕流程_第2页
控制屏幕流程_第3页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第四章控制屏幕流程概览内容屏幕流程控制介绍设置下一个屏幕调用新的屏幕序列退岀当后台处幕卜理屏幕对于用户来说,事 号链接在一起。定 或动态地指定“下一务就是逐个岀现 的一系列屏 幕。在事务程序中,屏 幕由一系列 的“下一个屏幕 :义事务时,要指定第 一个屏幕的 号码。然后,对事务中 的每个屏幕,可以静态 地 -个屏幕指示器,要为它指 定“下一个 屏幕属性。该属性给 岀紧随着当 前屏幕的默人屏幕名称。然而,无论何时动态 设置“下一个屏幕, 都会覆盖静 态属性。动态屏幕序列任何屏幕都可以设置它自己的“下一个屏幕作为屏幕处理的一局部。做到这一 点的ABAP/4命令是SET SCREEN和CALL SC

2、REEN。动态设置屏幕时,可以逐个地串在 一起象在 链中一样,或将它们 的组插入到 当前链中 以下主题提供关于在事务中处理屏幕的信息:屏幕流程控制介绍页1 设置下一个屏幕页2 调用新的屏幕序列页2 退出当前屏幕页3 例如事务:设置和调用屏幕页3 后台处理屏幕页5 屏幕流程控制介绍关于在事务 起传送。TZ40使用两个屏幕和对话框弹出窗口 用于获得用户的更新。事务总是显示开始的码为100和200 第三个 210只是在一定 的条件下才 显示。可能 的屏幕流程 如下:中控制屏幕流程的例如,请参见事务TZ40。该事务在开发类SDWA TZ40让用户显示航班信息并将更新信息输入到显示中。中,同系统两个屏幕

3、号在实践中, 用户见到如 下序列:屏幕100:用 户输入航班 信息,并按 ENTER请求显示航 班详情。屏幕200:系统在更新模式中显示关于航班的全部细节。用户通过键入全部显示 输入所作的更改。屏幕210屏幕210只在用户试 图不保存而 退出屏幕200时才出现。 弹出内容提 醒用户保存 所作的更改 或取消通 过指定是或“否对话框屏幕。要想使该屏幕序列成为可能,事务TZ40必须能够有条件地调用个屏幕之后用户要,ABAP/4模块可以“转入或“调用下一个屏幕。两 者的差异在 于处理完下 控制转到哪里。相关的 ABAP/4命令是:SET SCREEN .CALL SCREEN .LEAVE SCREE

4、N.LEAVE TO SCREEN .通过SET SCREEN,在链中当前屏幕简单地指定下一个屏幕。当前屏幕处理完 下一 个屏幕。从 下一个屏幕 返回到当前 屏幕不是自 动的。使用 CALL SCREEN,挂起当前正调用的SCREEN TO SCREEN 0调用的屏幕 就能够返回详细信息, 设置下一个 调用新的屏 退出当前屏毕后,控制转入该设置下一个链,调入下一个屏幕或屏幕链 到挂起的链上。通过语句 LEAVE参见:屏幕页2 幕序列页2 幕页3 屏幕都有静态的“下一个屏幕属性,每一个屏幕SET SCREEN语句覆盖该指定:该属性指定 跟随当前屏 幕的下一个、屏幕。可以使用SET SCREEN

5、vscreen number.SET SCREEN告诉系统忽 略静态定义 的“下一个 屏幕,而使用 作为下一个 屏幕。该覆盖是暂时的并且对储存在屏幕制作器中的属性值没有影响。SET SCREEN语句只指定 下一个屏幕:它不中断 当前屏幕的 处理。如果 未完成当前 屏幕就要转 入 下一个屏 幕,请使用 LEAVE SCREEN语句。1注意可以使 用变量指定 下一个屏幕 号:DATA: REQSCRN LIKE SY-DYNNR VALUE 100. MODULE SET_NEXT_SCREEN.SET SCREEN REQSCRN.ENDMODULE.系统字段SY-DYNNR总是包含当前屏幕的号

6、码调用新的屏幕序列有时要将屏幕或整个屏幕序列插入到事务过程中。例如,可能要让某个用户从主应用程序屏幕中 调用弹 岀屏幕,以 输入辅助信 息。完成输 入以后,用 户应当能够 关闭弹岀屏 幕并直接返 回到主屏 幕中先前所离开的地方。要做到这一点,有两种方法:使用CALL SCREEN语句CALL SCREEN可以向当前序列中插入这样的序列。在此对该语句的使用作了说 明。调用对话模块对话模块是 能够调用的、不属于特 定事务的屏 幕序列。对 话模块有自 己的模块 池,能被任何 事务调用。关于使用对 话模块的详 细信息,参 见调用对话模块页Error! Not a valid link.。调用新屏幕序列

7、的语法是:CALL SCREEN vscreen number.3既然该语句实际上是挂起当前序列并启动新序列,因此可以将CALL SCREEN看作“堆积序列。系统继续进行新序列,直到它完成才恢复先前挂起的序列。CALL SCREEN之后直接恢复处理该命令要调用屏幕 作为对话框 弹出,请使用带选 项STARTING AT、ENDING AT 的CALL SCREEN :CALL SCREEN vscreen numberSTARTING AT start columnENDING AT vend column vend lineSTARTING AT和ENDING AT选项告诉系 统在何处定 位

8、弹出屏幕。屏幕本身 必须比常规 屏幕小。 在ABAP/4中,屏幕的 每个可堆积 序列都是“调用模式。从给定当 前序列返回 的方法使得 这一 点很重要。要终止 调用模式并 返回到挂起 链,请将“下一个屏幕设置为0并退岀:LEAVE TO SCREEN 0.或 SET SCREEN 0.LEAVE SCREEN .返回到挂起链时,用直接跟随初始CALL SCREEN语句的语句来恢复执行。事务中的初 始屏幕序列 本身即是调 用模式。女口果在该序列 中LEAVE TO SCREEN 0 也就是说,没 有堆积任何其它的调用模式,那么从事务中一起返回。1一次可以堆积最多9个调用模式退岀当前屏幕要终止处理当

9、前屏幕,请使用:LEAVE TO SCREEN vscreen number 。或SET SCREEN 。LEAVE SCREEN。这两个命令都终止处理当前屏幕,并直接跳到 屏幕号。如果使用SET SCREEN而没有使用LEAVE SCREEN,那么程序在转 入 屏幕号之前完成当 前屏幕的处 理。如果使用LEAVE SCREEN而之前没有使用SET SCREEN,那么终止当前屏幕,并直接转入屏幕属性 中指定为默认的下一个屏幕在“调用模 式中,特殊屏幕号0 LEAVE TO SCREEN 0 导致系统跳回到先 前的调用级 另U。也就 是说,如果使 用CALL SCREEN调用屏幕序 列,那么LE

10、AVE TO SCREEN 0将终止该序 列并返回调 用 屏幕。如果没有调用过屏幕序列,LEAVE TO SCREEN 0 将终止事务。关于CALL SCREEN 的详细信息,参见调用新的屏幕序列页2 。例如事务:设置和调用屏幕要了解屏幕 流程控制的 完整实施, 查看事务 TZ40 开发类SDWA是如何组织 的很有用。屏幕流程逻辑要显示事务如何转入或调用屏幕,请看屏幕200的处理。退出命令的处理功能代码为BACK和EXIT 显示了该过程。处理BACK或EXIT功能代码时,PAI模块必须检 查在屏幕显示或最后保 存之后航班 细节是否更 改。如果是,屏幕200必须调出弹 出屏幕210以提示保存。屏

11、幕200流程逻 辑的相关局部是:* -* Screen 200: Flow Logic*& *PROCESS AFTER INPUT.MODULE EXIT_0200 AT EXIT-COMMAND.* (vField checks here.)MODULE USER_COMMAND_0200.ABAP/4 代码屏幕200的PAI模块如下。 事务TZ40提供所有返 回功能(“后退、“退出和“取消)作为退 出命令。然而,在屏幕200中,只有“取消功能允许立即从 屏幕退出。要使取消生 效,使用标 准 退岀逻辑 告诉系统跳 回到屏幕100:*&*& Module EXIT_0200 INPUT*&*

12、MODULE EXIT_0200 INPUT.CASE OK_CODE. WHEN CANC.CLEAR OK_CODE.SET SCREEN 100. LEAVE SCREEN.ENDCASE.ENDMODULE.屏幕200的所有其它的功能代码处理如下:“保存功能触发数据库的更新“退出 和“后退 功能触发调 用SAFETY_CHECK例程。该例程检查屏幕 上未 保存的 数据,必要 时提醒用户 保存。注意返回方 法。对于“退出功能,控制从事务中一起返 回(SET SCREEN 0)。对于“后退功能, 将先前 屏幕设置为 后继屏幕(SET SCREEN 100 )。*&*& Module USE

13、R_C0MMAND_0200 INPUT*&*MODULE USER_COMMAND_0200 INPUT.CASE OK_CODE.WHEN SAVE.UPDATE SPFLI.IF SY-SUBRC = 0.MESSAGE S001 WITH SPFLI-CARRID SPFLI-CONNID.ELSE.MESSAGE A002 WITH SPFLI-CARRID SPFLI-CONNID. ENDIF.CLEAR OK_CODE.WHEN EXIT.CLEAR OK_CODE.PERFORM SAFETY_CHECK USING RCODE.IF RCODE = EXIT. SET SC

14、REEN 0. LEAVE SCREEN. ENDIF.WHEN BACK.CLEAR OK_CODE.PERFORM SAFETY_CHECK USING RCODE.IF RCODE = EXIT. SET SCREEN 100. LEAVE SCREEN. ENDIF.ENDCASE.ENDMODULE.SAFETY_CHECK 例程代码如 下。CHECK语句将当前屏幕值与保存屏幕值作 比拟。如果值匹配,那么 不需要保存并且终止例程。如果值不同,那么 SAFETY_CHECK 调用弹出屏 幕210。弹 出屏幕询问用户是否要 保存,并在OK_CODE中返答复案(“保存、“退出和“取消)。*

15、 -* Subroutine SAFETY_CHECK* -*FORM SAFETY_CHECK USING RCODE.LOCAL OK_CODE.RCODE = EXIT.CHECK SPFLI NE OLD_SPFLI.CLEAR OK_CODE.CALL SCREEN 210 STARTING AT 10 5.CASE OK_CODE.WHEN SAVE. UPDATE SPFLI.WHEN EXIT.WHEN CANC. CLEAR SPFLI.ENDCASE.ENDFORM.后台处理屏幕可以使用SUPPRESS DIALOG取消所有屏幕。该命令允许“在后台进行屏幕处理 PBO和PAI逻辑,但并 不把屏幕显 示给用户。从事务对话步骤转到列表模式时取消屏幕很有用。在从屏幕的PBO逻辑调用的第一个模块中请使用SUPPRESS DIALOG命令。例如* ABAP/4 module processing for Screen 100CALL SCREEN 110 STARTING AT 10 5* Screen 110 flow logicPROCESS BEFORE OUTPUT.MODULE DIALOG_WINDOW.* ABA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论