SAP-检查多个关联字段输入,以及有条件地调用模块
生活随笔
收集整理的這篇文章主要介紹了
SAP-检查多个关联字段输入,以及有条件地调用模块
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
有時(shí)想作為一組檢查幾個(gè)字段。為此,請(qǐng)?jiān)?FIELD 語(yǔ)句中包含這些字段,并將它們放入?CHAIN-ENDCHAIN 塊中。在示例事務(wù) TZ31 中使用了 CHAIN 語(yǔ)句:
**** Screen flow logic: ****
CHAIN.
FIELD: SPFLI-CARRID, SPFLI-CONNID.
??MODULE CHECK_FLIGHT.
ENDCHAIN.
**** ABAP/4 module: ****
MODULE CHECK_FLIGHT INPUT.
SELECT SINGLE * FROM ?SPFLI
WHERE CARRID = SPFLI-CARRID
AND CONNID = SPFLI-CONNID.
IF SY-SUBRC NE 0.
??MESSAGE E005 WITH SPFLI-CARRID SPFLI-CONNID.
ENDIF.
ENDMODULE?
在鏈塊中,所有字段相互依賴。鏈內(nèi)發(fā)現(xiàn)錯(cuò)誤時(shí),會(huì)重新顯示屏幕,并允許輸出鏈中任何地方發(fā)現(xiàn)的字段,但仍不允許輸入任何非鏈字段。在用戶重新輸入值(輸入到鏈字段之一)之后,重新啟動(dòng) PAI 并將鏈中的所有語(yǔ)句作為一個(gè)單元重新執(zhí)行。鏈可以包括其它任何允許的流邏輯語(yǔ)言語(yǔ)句。而且,鏈可以包含多條 FIELD語(yǔ)句。一般情況下,所有FIELD語(yǔ)句應(yīng)出現(xiàn)在 CHAIN 塊的開(kāi)始處。
CHAIN.?
FIELD: A, B, C.
FIELD: D, E, F.
MODULE X.
MODULE Y.
ENDCHAIN.
允許將 MODULE 語(yǔ)句添加到包含在 CHAIN 塊中的 FIELD 語(yǔ)句中,但這樣實(shí)際上并沒(méi)有意義:
CHAIN.
FIELD F1.
FIELD: F2, F3 ?MODULE m1. "( 在 F3后無(wú)周 期)
MODULE m2.
ENDCHAIN.
如果模塊 m 發(fā)現(xiàn)錯(cuò)誤,則在重新顯示時(shí)它打開(kāi)所有要輸入的鏈字段,而不只是 F2 和 F3。只有當(dāng)使用 AT- 或 ON- 條件之一時(shí) ,用該方式使用 FIELD...MODULE 才意義。可以在模塊調(diào)用(從屏幕流邏輯)中設(shè)置條件。例如可以指定某模塊只在給定字段具有值(非初始值)時(shí)才被調(diào)用: FIELD X MODULE CHECK_FIELDX ON INPUT.
使用 FIELD 語(yǔ)句的條件形式,可以防止不必要的模塊調(diào)用。尤其當(dāng)更新表輸入時(shí),條件調(diào)用可以極大地提高性能。有關(guān)信息在下列主題中提供:
☆條件 FIELD 語(yǔ)句
添加 ON- 和 AT- 條件之后,FIELD...MODULE 流邏輯語(yǔ)句就變成了條件語(yǔ)句。請(qǐng)使用以下條件指定何時(shí) 應(yīng)調(diào)用模塊 :
ON INPUT
只有當(dāng)字段包含初始值以外的值時(shí),才調(diào)用ABAP/4模塊。此初始值由該字段的數(shù)據(jù)類型決定:空格對(duì)應(yīng)于字符字段,零對(duì)應(yīng)于數(shù)字字段。如果用戶將字段值更改回初始值,則 ON INPUT不觸發(fā)調(diào)用。(與 ON REQUEST 調(diào)用相比,此時(shí)它不觸發(fā)調(diào)用。)
ON REQUEST
只有自上一屏幕顯示以來(lái)用戶已輸入字段值時(shí),才調(diào)用 ABAP/4模塊。即使用戶鍵入已存在的值,值也象已變化了一樣予以記數(shù)。
一般地,通過(guò)任何形式的“手工輸入”都可以觸發(fā) ON REQUEST 條件。系統(tǒng)將設(shè)置字段的下列方式 作為手工輸入:
- 實(shí)際用戶輸入
- SET PARAMETER 字段輸入(手工和自動(dòng)兩種)
- HOLD DATA 字段輸入
- 用于參數(shù)事務(wù)的參數(shù)輸入(CALL TRANSACTION...USING)
- 用于定制系統(tǒng)的全局字段(這些為某些字段指定自動(dòng)設(shè)置)
所有這些符合 ON REQUEST 條件并將觸發(fā)模塊調(diào)用 。
ON *-INPUT
如果用戶在字段的首字符中已經(jīng)輸入“*”,并且該字段在屏幕制作器中具有屬性 *-entry,則調(diào)用 ABAP/4 模塊??梢栽谙胫粰z查某些輸入類型的例外情況下使用該選項(xiàng)。有些條件只適用于 FIELD 語(yǔ)句,而其它條件則適用于 CHAIN 塊中的 FIELD 語(yǔ)句。尤其是,ON- 和 AT- 條件在包含多字段但又未包含在 CHAIN 塊中的 FIELD 語(yǔ)句中有特殊意義,
☆條件 CHAIN 語(yǔ)句 要在條件 CHAIN 中調(diào)用模塊,有兩個(gè)選 項(xiàng): ON CHAIN-INPUT 類似于 ON INPUT。如果鏈中的任一字段包含初始值(空值或零)以外的值,則調(diào)用ABAP/4模塊。 ON CHAIN-REQUEST 該條件功能類似于 ON REQUEST,但是如果鏈中的任一字段的值發(fā)生更改,則調(diào)用ABAP/4模 塊。 例如: CHAIN.? FIELD: A, B, C. FIELD: D, E, F. MODULE X ON CHAIN-INPUT. MODULE Y. ENDCHAIN. 在此,如果字段A、B、C、D、E、F中任何一個(gè)具有不同于初始值的值,則調(diào)用模塊 X 。而始終調(diào)用模塊Y。如果Y發(fā)現(xiàn)錯(cuò)誤,則在錯(cuò)誤對(duì)話期間,重新打開(kāi)這六個(gè)字段并等待輸入。?要將條件限制到特定字段,請(qǐng)將 MODULE 語(yǔ)句連接到相關(guān) FIELD 語(yǔ)句。 CHAIN.? FIELD: A, B, C ?MODULE X ON INPUT. ENDCHAIN. 在該示例子中,只有當(dāng)列表(C)中的最后字段包含非初始值的值時(shí),才調(diào)用模塊X。但是,如果 X 發(fā)現(xiàn)錯(cuò)誤,則在錯(cuò)誤對(duì)話框中重新打開(kāi)這三個(gè)字段(A,B,C)并等待輸入。有時(shí)想要的調(diào)用只取決于幾個(gè)字段,而不是其它字段。為明確起見(jiàn),將正在使用的鏈斷開(kāi)并為獨(dú)立字段組合創(chuàng)建獨(dú)立鏈?zhǔn)亲詈?jiǎn)單的。在每種情況下,都使用 ON CHAIN-INPUT 或 ON CHAIN-REQUEST。 例如: CHAIN.? FIELD: A, B, C ?MODULE X ON CHAIN-REQUEST. ENDCHAIN. CHAIN.? FIELD: A, B, D, E ?MODULE Y ON CHAIN-REQUEST. ENDCHAIN.
☆條件 CHAIN 語(yǔ)句 要在條件 CHAIN 中調(diào)用模塊,有兩個(gè)選 項(xiàng): ON CHAIN-INPUT 類似于 ON INPUT。如果鏈中的任一字段包含初始值(空值或零)以外的值,則調(diào)用ABAP/4模塊。 ON CHAIN-REQUEST 該條件功能類似于 ON REQUEST,但是如果鏈中的任一字段的值發(fā)生更改,則調(diào)用ABAP/4模 塊。 例如: CHAIN.? FIELD: A, B, C. FIELD: D, E, F. MODULE X ON CHAIN-INPUT. MODULE Y. ENDCHAIN. 在此,如果字段A、B、C、D、E、F中任何一個(gè)具有不同于初始值的值,則調(diào)用模塊 X 。而始終調(diào)用模塊Y。如果Y發(fā)現(xiàn)錯(cuò)誤,則在錯(cuò)誤對(duì)話期間,重新打開(kāi)這六個(gè)字段并等待輸入。?要將條件限制到特定字段,請(qǐng)將 MODULE 語(yǔ)句連接到相關(guān) FIELD 語(yǔ)句。 CHAIN.? FIELD: A, B, C ?MODULE X ON INPUT. ENDCHAIN. 在該示例子中,只有當(dāng)列表(C)中的最后字段包含非初始值的值時(shí),才調(diào)用模塊X。但是,如果 X 發(fā)現(xiàn)錯(cuò)誤,則在錯(cuò)誤對(duì)話框中重新打開(kāi)這三個(gè)字段(A,B,C)并等待輸入。有時(shí)想要的調(diào)用只取決于幾個(gè)字段,而不是其它字段。為明確起見(jiàn),將正在使用的鏈斷開(kāi)并為獨(dú)立字段組合創(chuàng)建獨(dú)立鏈?zhǔn)亲詈?jiǎn)單的。在每種情況下,都使用 ON CHAIN-INPUT 或 ON CHAIN-REQUEST。 例如: CHAIN.? FIELD: A, B, C ?MODULE X ON CHAIN-REQUEST. ENDCHAIN. CHAIN.? FIELD: A, B, D, E ?MODULE Y ON CHAIN-REQUEST. ENDCHAIN.
總結(jié)
以上是生活随笔為你收集整理的SAP-检查多个关联字段输入,以及有条件地调用模块的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: SAP ECC6.0内存参数调整和调优
- 下一篇: ABAP中的动态运算函数