第十一章控制逻辑设计..docVIP

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第11章 控制逻辑设计 11.1定义和调用模块 11.1.1 定义对话模块 在流逻辑定义中,PROCESS语句用于说明模块何时被调用,决定了事件触发的时机,MODULE语句中指定模块名,告诉系统为该事件调用的具体ABAP模块。 对话程序中最主要的逻辑事件类型是PBO和PAI,而其他两种POV和POH可以看作是PAI模块。 在ABAP模块池和可执行程序中,可以在MODULE和ENDMODULE语句之间定义对话模块。在屏幕PBO中调用的模块需要在其后指明OUTPUT附加项,PAI模块则使用INPUT附加项。 可以通过对象导航器为程序创建新模块。 定义好的对话模块不专属于某个屏幕,而是可以被程序中的任意多个屏幕所调用。通过系统变量SY-DYNNR返回值(即屏幕序号),可以确定是哪个屏幕正在对其进行调用。 对话程序模块经常存储在模块池中,而且一般将几个引用程序插入到该模块池程序中,存放相关的模块,例如所有PBO或PAI模块应位于同一引用程序,类似地,还应将所有程序代码中使用到的子程序也置于一个引用程序中,加上公有数据声明引用程序TOP,一个模块池中一般需要包含四个引用程序,命名规则分别是: pgmname_top,存放全局数据; pgmname_O01,存放PBO模块; pgmname_I01,存放PAI模块; pgmname_F01,存放功能模块。 这些引用程序应该先于流逻辑块创建,流逻辑模块添加时,系统将询问添加至哪个引用程序之中,由程序员选择正确的位置。 在模块化的结构中,不存在局部数据对象,所有定义在MODULE和ENDMODULE语句之间的数据将被放置到整个程序的公用数据区域,因此最好不要在该结构中出现数据数据的定义和声明语句,应将所有的数据声明放置在TOP引用程序的相关部分。 11.1.2 调用对话模块 在屏幕逻辑语言中,使用MODULE语句对在模块池等ABAP程序中定义的模块进行调用,语法形式为: MODULE mod. 基本规则: 首先,一旦对话程序开始运行,LOAD-OF-PROGRAM事件被触发并处理结束后,ABAP处理器将控制移交至屏幕处理器。 屏幕处理器将调用对话事务代码中设定的初始屏幕,PROCESS BEFORE OUTPUT事件被触发,然后屏幕处理器将控制交回ABAP处理器,开始依次执行该屏幕PBO事件中定义的模块。 ABAP处理器执行了所有的PBO模块之后,将控制交给屏幕处理器,此时所有的ABAP字段的数据值将传输给同名的屏幕字段(如输入输出字段),然后将屏幕(包括经程序更新的屏幕元素值)显示给用户。 一旦用户触发某些对话功能(例如回车)屏幕中的数据(如用户输入的值)将回传给程序中相应的ABAP字段,PROCESS AFTER INPUT事件被触发,所有的ABAP PAI模块被执行后,系统将继续处理后续对话屏幕,触发新的屏幕的PBO事件。 11.1.3 无条件调用 1、类型E的功能代码 类型为E的功能代码与无条件调用模块相对应。要将屏幕元素的功能代码定义为E类型,可以将FUNCTIONAL TYPE字段设定为E。通过双击功能代码或者goto-object lists-function list设定。 如果用户触发了E类型功能,在PAI中系统将忽略所有自动的字段检查并直接调用特定的MODULE语句(AT EXIT-COMMAND)中的模块。如果不存在与之对应的流逻辑语句,则将继续进行普通状态下的系统输入检查和PAI模块调用。 类型为E的功能应该是使用用户离开当前屏幕事务,因而GUI菜单中经常出现的按钮BACK(F3)、EXIT(SHIFT+F3)、和CANCEL(F12)的功能代码往往被设定为E类型。 2、类型E的PAI模块 当用户选择了E类型相关功能,屏幕流逻辑将直接跳至下列语句: MODULE mod AT EXIT-COMMAND. 无论在PAI逻辑中出现在何位置,该语句中指定的模块都被在系统字段输入检查之前首先被调用。在此之前,OK代码字段被传递至ABAP程序中同名字段,但没有其他屏幕字段被传递至相应ABAP字段。 如果程序中定义了多个带有AT EXIT-COMMAND附加项的模块,则只有第一个被执行,但用户选择非E类型的功能时,该语句不会被执行。如果屏幕中包含E类型功能代码但没有定义类型E的PAI模块,则系统仍将进行PAI输入检查然后顺序执行PAI模块。 例: PROCESS AFTER INPUT. MODULE back AT EXIT-COMMAND. MODULE user_command_200. … ABAP模块代码: MODULE back INPUT. IF ok_code = ‘BACK’. CLEAR: ok_code. LEAVE TO SCREEN 100

文档评论(0)

cwhs + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档