[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.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM