zoukankan      html  css  js  c++  java
  • [SAP ABAP开发技术总结]DIALOG屏幕流逻辑

    12.7.     屏幕流逻辑

    PROCESS BEFORE OUTPUT.
    PROCESS AFTER I
    NPUT.
    PROCESS ON H
    ELP-REQUEST.
    PROCESS ON VALUE-REQUEST.

    12.7.1.           FIELD

    FIELD <f>.

    使用FIELD语句后,屏幕字段<f>需要在该语句处理完后才传递到ABAP程序相应的字段中,在后没有带module选项时,仅仅只是控制屏幕字段传输到ABAP程序中的时间点,如需对屏幕字段进行检验,通过以下语句来实现检验:

    FIELD<field_name> MODULE<module_name>.

    仅只有未出现在FIELD语句中的屏幕字段才会在PAI事件块处理传输到ABAP程序中去。所以当某个屏幕字段出现在FIELD语句中,并且在该 FIELD语句未执行完之前,不要在PAI dialog modules中使用该屏幕字段(该屏幕字段相关的FIELD语句执行完成之后才可以在后续的PAI dialog modules调用中使用),否则,ABAP程序同名字段中的值使用的是前一次对话屏幕中所设置的值。

    12.7.2.           MODULE 

    FIELD dynp_field MODULE mod [ {ON INPUT}
    | {
    ON REQUEST
    }
    | {
    ON *-INPUT
    }
    | {
    ON {CHAIN-INPUT|CHAIN-REQUEST
    }}
    | {
    AT CURSOR-SELECTION}
    .

           ON INPUT只要该字段不为初始值就会触发module

           ON REQUEST:该字段发生变化后触发module

     

    FIELD <f> MODULE <mod> ON INPUT|REQUEST|*-INPUT. 相当于选择屏幕的 AT SELECTION-SCREEN ON field

     

    CHAIN.
     
    FIELD: <f1>, <f2>,<fi...>.
     
    MODULE <mod1> ON CHAIN-INPUT|CHAIN-REQUEST.
     
    FIELD: <g1>, <g2>,<gi...>.
     
    MODULE <mod2> ON CHAIN-INPUT|CHAIN-REQUEST.
     
    ...
    ENDCHAIN.

    只要<fi>某个字段满足条件(<mod1>后面的CHAIN-INPUTCHAIN-REQUEST条件),<mod1>就会被调用,而只要<fi><gi>中的某个字段满足条件,则<mod2>就会被调用。如果在module中检测不通过(如MESSAGE… E类消息时),则CHAIN…ENDCHAIN之外的所有其他屏幕字段将会被锁定且置灰,这与选择屏幕的AT SELECTION-SCREEN ON BLOCK校验是一样的

    CHAIN.
     
    FIELD: <f1>, <f2>,<fi...>.
     
    FIELD <f> MODULE <mod1> ON INPUT|REQUEST|*-INPUT|CHAIN-INPUT|CHAIN-REQUEST.
     
    MODULE <mod2> ON CHAIN-INPUT|CHAIN-REQUEST.
    ENDCHAIN.

    <mod1>被调用的条件是所对应字段<f>满足ON后面指定的条件即可执行。<mod2>被调用的条件是只要<fi><f>中的某个字段满足条件即可执行。

    12.7.3.           ON INPUTON CHAIN-INPUT区别

    CHAIN.
     
    FIELD: f1,f2.
     
    FIELD: f3 MODULE mod1 ON INPUT. 只有f3为非初始值时才调用mod1
    ENDCHAIN.

    CHAIN.
     
    FIELD:f1,f2.
     
    FIELD:f3 MODULE mod1 ON CHAIN-INPUT. f1,f2,f3中任一字段包含非初始值时都调用mod1
    ENDCHAIN

     

    如果不在 CHAIN中时,不能像下面这样写:

      FIELD a. "FIELDMODULE只能写在同一语句当中
     
    MODULE check_a ON INPUT.
    只有在CHAIN中时,MODULE语句才可以单独出现(不与FIELD在同一语句中),且只能是CHAIN-INPUT
     
    MODULE mod1 ON CHAIN-INPUT.

  • 相关阅读:
    当统计信息不准确时,CBO可能产生错误的执行计划,并在10053 trace中找到CBO出错的位置示例
    ruby class_eval的使用
    ruby修改TXT文件
    ruby格式化
    VIM常用命令集合
    Watir::IE.attach与IE7选项卡的设置关系
    ruby 连接mysql数据库
    AutoIT删除Internet临时文件
    watir学习之—如何遍历页面所有的超链接
    watir如何取到元素的css属性
  • 原文地址:https://www.cnblogs.com/jiangzhengjun/p/4265201.html
Copyright © 2011-2022 走看看