版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、通過事件控 制 ABAP/4 程序流第四章概覽內(nèi)容定義過 ABAP/4 處理程序事件及其事 件關(guān)鍵字INITIALIZATIONAT SELECTION-SCREENSTART-OF-SELECTIONGET GET LATEEND-OF-SELECTION終止過無條件地離 開過有條件地離 開過無條件地離 開 GET 事件有條件地離 開 GET 事件ABAP/4 是事件驅(qū)動 語言。這意 味著通過外 部事件控制 一般的 ABAP/4 程序流。程 序的一部分 組成過,并將該過分配到 特定的事件 。事件關(guān)鍵字 提供了事件 和程序之間 的接口。系 統(tǒng)總是在相 應(yīng)事件出現(xiàn) 時啟動過(參見 ABAP/4中
2、 流控制的概 念 (頁 71) ) 。在控制 ABAP/4 程序流 (頁 71) 中介紹了過的外部 控制和可能 涉及到的事 件??梢詫W(xué)到中的流 控制(內(nèi)部 控制)。本 節(jié)介紹 ABAP/4 程序定義過可以在 ABAP/4 中通過使用 事件關(guān)鍵字 定義過件關(guān)鍵字 進(jìn)行了說明 。在 事件及其事 件關(guān)鍵字 (頁 ) 中對可能的 事沒有緊跟著 事件關(guān)鍵字 或 FORM-ENDFORM 塊的語句自 動成為默認(rèn) 事件 START-OF-SELECTION過的一 部分(關(guān)于 此默認(rèn)事件 的詳細(xì)信息 ,參見 START-OF-SELECTION (頁 ) )。這樣將 有下列影響 :如果在 REPORT 或 P
3、ROGRAM 語句與第一 個事件關(guān)鍵 字或 FORM 語句之間寫語句,則將 把這些語句 包括在 START-OF-SELECTION 過中。如果沒 有把 START-OF-SELECTION 關(guān)鍵字包括 在報表中, 則這些語句整個 START-OF-SELECTION 過。如果將 START-OF-SELECTION 關(guān)鍵字包括 在報表中, 則將把這些 語句此塊的開始 部分。-到如果沒有 在程序中指 定事件關(guān)鍵 字,則該程 序 FORM 語句之前的 所有語句START-OF-SELECTION 過。注 意,這種情 況下,永遠(yuǎn) 不會執(zhí)行 FORM -ENDFORM 塊之后的所 有語句。因為通過事
4、 件唯一切換 執(zhí)行順序, 所以在程序 中過的 出現(xiàn)順序是 沒有任何關(guān) 系的。但是 ,為了保證 可讀性,在 程序中應(yīng)該 以過的 執(zhí)行順序排 列它們。與操作或控 制語句不一 樣,系統(tǒng)在 生成程序時 而不是在運(yùn) 行時間中執(zhí) 行說明性語 句(關(guān)于說 明性語句的 詳細(xì)信息, 參見 關(guān)鍵字 (頁 22) )。對它們 的執(zhí)行與它 們在程序代 碼中的位置 無關(guān),并且 可以屬于任 何過。 為清楚起見 ,應(yīng)該把所 有說明性的 關(guān)鍵字放到 程序或子程 序的開始處 。REPORT SAPMZTST.WRITE / Sement 1.兩個事件關(guān) 鍵字之間或 事件關(guān)鍵字 與 FORM 語句之間的 所有語句( 參見 定義子
5、程序 (頁 96) )過。出現(xiàn)事 件時,系統(tǒng) 將在相應(yīng)事 件關(guān)鍵字之 后處理過。ABAP/4 報表程序中 的所有語句 都是過或子程序的 一部分。ABAP/4 處理程序報表程序是 過 的集 合,執(zhí)行該 程序以對特 定事件作出 反應(yīng),特別 是使用邏輯 數(shù)據(jù)庫時。 可以把這些 塊視為可調(diào) 用模塊。在 程序代碼中 ,它們不需 要以任何特 殊的順序出 現(xiàn)。一旦調(diào) 用報表程序 ,系統(tǒng)就啟 動另一個進(jìn) 程(控制程 序),該進(jìn) 程調(diào)用這些 模塊,并控 制外部程序 流。此控制程序 是 ABAP/4 處理程序。 它監(jiān)視 ABAP/4 報表程序、 邏輯數(shù)據(jù)庫 程序和其他 程序模塊( 例如 屏 幕)之間的 交互作用。
6、 它也解釋 ABAP/4 程序的運(yùn)行 時間對象。 必須生成每 個 ABAP/4 程序,在 ABAP/4 編輯器中編 寫這些程序 ,以創(chuàng)建其 運(yùn)行時間對 象。這既適 用于報表程 序,也適用 于邏輯數(shù)據(jù) 庫程序。即 可以在 ABAP/4 編輯器中通 過選擇“程 序 - 生成”執(zhí)行 該生成,也 可以在 “ABAP/4 編輯器:初 始屏幕”上 通過選擇“ 生成”執(zhí)行 。第一次啟 動報表程序 時,自動生 成該報表程 序。通過在程序 中使用的事 件關(guān)鍵字控 制 ABAP/4 處理程序和 不同程序之 間的交互作 用。例如在報表程 序 START-OF-SELECTION、 GET 中,等等,參見 事件及其事
7、 件關(guān)鍵字 (頁 ) ,在邏輯數(shù) 據(jù)庫程序 PUT 中,等等,參見 邏輯數(shù)據(jù)庫 的特征和(頁 Error! Not a valid link.) 。根據(jù)由事件 關(guān)鍵字定義 的流,ABAP/4 處理程序解 釋相應(yīng)程序 單元,并開 始處理它們 。事件及其事 件關(guān)鍵字這里有幾組 事件關(guān)鍵字 ,這些事件 關(guān)鍵字在特 定環(huán)境下控 制 ABAP/4 程序流。FORM ROUTINE.WRITE / Subroutine.ENDFORM.WRITE / Sement 2. PERFORM ROUTINE.WRITE / Sement 3.輸出如下所 示:Sement 1在此程序中 ,只執(zhí)行了 START-O
8、F-SELECTION 過。此 塊包含第一 個 WRITE語句?,F(xiàn)在,按照 下列方法把 START-OF-SELECTION 語句程 序中:REPORT SAPMZTST.WRITE / Sement 1. FORM ROUTINE.WRITE / Subroutine.ENDFORM.START-OF-SELECTION.WRITE / Sement 2. PERFORM ROUTINE.WRITE / Sement 3.輸出如下所 示:Sement 1Sement 2 Subroutine Sement 3在此程序中 ,START-OF-SELECTION 過包含 除 FORM-ENDFO
9、RM 塊之外的所有語句。下 列是此程序 更易讀的形 式:REPORT SAPMZTST. START-OF-SELECTION.WRITE / S ement 1. WRITE / S ement 2. PERFORM ROUTINE.WRITE / S ement 3.FORM ROUTINE.WRITE / Subroutine.ENDFORM.在程序的這 種形式中, 也可以忽略 START-OF-SELECTION 語句。邏輯數(shù)據(jù)庫 是典型報表 程序的外部 流控制的中 心點(diǎn)(參見 用邏輯數(shù)據(jù) 庫數(shù)據(jù) (頁 11) )。如果將 邏輯數(shù)據(jù)庫到報表 程序,將導(dǎo) 致顯示選擇 屏幕,并決 定系統(tǒng)如
10、何 從數(shù)據(jù)庫表 中數(shù)據(jù) 。這引起在 下列表中說 明的事件序 列。關(guān)于事 件出現(xiàn)順序 的詳細(xì)信息 ,參見 邏輯數(shù)據(jù)庫和 ABAP/4 報表 (頁 Error! Not a valid link.) 。下列事件出 現(xiàn)在典型報 表程序的運(yùn)行時間處, 該報表程序 使用邏輯數(shù) 據(jù)庫:事件關(guān)鍵字INITIALIZATION (頁 )事件在顯示選擇 屏幕之前的 點(diǎn)AT SELECTION-SCREEN (頁 )選擇屏幕仍 然活動時, 處理用戶在 選擇屏幕上 輸入之后的 點(diǎn)START-OF-SELECTION (頁 )處理選擇屏 幕之后的點(diǎn)GET (頁 )點(diǎn)位于邏輯 數(shù)據(jù)庫提供 數(shù)據(jù)庫表 的行處。GET LA
11、TE (頁 )處理所有表 之后的點(diǎn), 在邏輯數(shù)據(jù) 庫的結(jié)構(gòu)中 ,使這些表 位于數(shù)據(jù)庫 表 的下層。END-OF-SELECTION (頁 )處理完邏輯 數(shù)據(jù)庫提供 的所有行之 后的點(diǎn)。下 列說明 這些事件的 過。處理和顯示 報表程序輸 出列表時,出現(xiàn)其他沒 有連接到邏 輯數(shù)據(jù)庫的 事件??梢?用這些事件 格式化輸出 列表,并使 報表程序成 為交互式的 。在適當(dāng)?shù)?節(jié)中將繼續(xù) 說明這些事 件。處理報表程 序輸出列表 時,出現(xiàn)下 列事件:可以用這 些關(guān)鍵字改 善輸出列表 的格式。說 明參見創(chuàng)建列表 (頁 Error! Not a valid link.) 。下列事件出 現(xiàn)在報表程 序輸出列表 的顯
12、示中:事件關(guān)鍵字事件ILECTION用 戶在該點(diǎn)處 選擇行ATMAND用 戶在該點(diǎn)處 按下功能鍵 或在命令字 段中輸入命 令A(yù)T PF用 戶在該點(diǎn)處 按下有功能 代碼 PF 的功能鍵可 以使用這些 關(guān)鍵字編寫 交互式的程序。詳 情參見 交互式列表 (頁 Error! Not a valid link.) 。關(guān)于所有事 件關(guān)鍵字的 詳細(xì)說明, 參見事件關(guān) 鍵字文檔。INITIALIZATION啟動已定義 選擇屏幕的 程序(在程 序自身或在 被的邏 輯數(shù)據(jù)庫程 序中)時, 系統(tǒng)通常首 先處理此選 擇屏幕。如 果希望在處 理選擇屏幕 之前執(zhí)行過,可以 把它分配到 事件關(guān)鍵字INITIALIZATIO
13、N。在此塊中, 指定初始化 選擇屏幕的 語句,例如 通過更改參 數(shù)或選擇標(biāo) 準(zhǔn)的默認(rèn)值 。這只對在 邏輯數(shù)據(jù)庫 中定義的參 數(shù)或選擇標(biāo) 準(zhǔn)才有效。 對于選擇標(biāo) 準(zhǔn),應(yīng)該通 過更改選擇 表 的表頭行并 把它附加到 表中,至少 定義選擇表 的組件 -SIGN 、 -OPTION 、-LOW( 參見 選擇表 (頁 214) )。否則, 可能未定義 部分選擇標(biāo) 準(zhǔn)。如果希望通 過檢查邏輯 數(shù)據(jù)庫 SAPDB 自己(使用 事務(wù) SLDB 或通過選擇 “工具 - ABAP/4 開發(fā)工作臺 - 開發(fā) - 編程環(huán)境 - 邏輯數(shù)據(jù)庫 ”),或通 過檢索字段 的技術(shù)信息 而更改內(nèi)部 字段,可以 找到該字段 的名稱
14、。為 此,在選擇 屏幕上選擇 輸入字段, 并按下 F1。然后 ,選擇 框中的“技術(shù)信息”。 在下列窗口 的字段“屏 幕字段”中 ,將會看到 程序中使用 的字段名稱 。假定有到邏輯數(shù)據(jù) 庫 F1S 的報表程序 :REPORT SAPMZTST.PARAMETERSDAY LIKE SY-DATUM DEFAULT SY-DATUM. TABLES SPFLI.啟動此程序 時,將自動 出現(xiàn)下列選 擇屏幕:在邏輯數(shù)據(jù) 庫 F1S 中定義有選 擇文本“承 運(yùn)方 ID”的選 擇標(biāo)準(zhǔn),以 及有選擇文 本 “從”和 “到”的參 數(shù)(參見 選擇文本 (頁 54) )。在程序 自身中定義 參數(shù)DAY。事件關(guān)鍵字
15、事件TOP-OF啟 動新頁時, 列表處理中 的點(diǎn)END-OF結(jié) 束頁時,列 表處理中的 點(diǎn)AT SELECTION-SCREEN事件關(guān)鍵字 AT SELECTION-SCREEN 提供了好幾 種在系統(tǒng)處 理選擇屏幕 時執(zhí)行過的方法。為了對處理 選擇屏幕時 出現(xiàn)的不同 事件都有效 ,關(guān)鍵字 AT SELECTION-SCREEN 有不同選項 。與 PARAMETERS 和 SELCECT-OPTIONS 語句的特殊 選項一起, 在 使用選擇屏幕 (頁 21) 中顯示了關(guān) 鍵字 AT-SELECTION 屏幕的某些 應(yīng)用。如果指定字 段的關(guān)鍵字 沒有任何選 項,則在系 統(tǒng)處理完選 擇屏幕之后 啟動
16、相應(yīng)過。如果 從此過中發(fā)送 ERROR MESSAGE, 則系統(tǒng)將又 顯示選擇屏 幕,并且可 以更改所有 輸入字段。 必須提供適 當(dāng)?shù)?ERROR MESSAGE。例如,此方 法可以輸入 字段命令, 盡管沒有在 邏輯數(shù)據(jù)庫 程序中使用 PARAMETERS 或SELECT-OPTIONS 語句的 OBLIGATORY 選項定義它 們。將邏輯數(shù)據(jù) 庫 F1S 附加到下列 報表程序: REPORT SAPMZTST MESSAGE-ID HB. TABLES SPFLI.AT SELECTION-SCREEN.IF CARRID-LOW IS INITIAL OR CITY FR IS INITI
17、AL OR CITY TO IS INITIAL. MESSAGE E000.ENDIF.在表 T100 中和MESSAGE。 通過語言、 兩個字符的 ID 和三位數(shù)字 對它們進(jìn)行 分組,可以 從程序中以 不同條件發(fā) 送 MESSAGE:A:Abend, 終止當(dāng)前事 務(wù)E:錯誤 ,系統(tǒng)等待 新輸入數(shù)據(jù)I:信息 ,處理 ENTER 之后,系統(tǒng) 繼續(xù)處理S:確認(rèn) ,消息出現(xiàn) 在下一屏上W:警告 ,可以更改 輸入數(shù)據(jù)或 通過按 ENTER 繼續(xù)必須在程序 的 REPORT 或 PROGRAM 語句之后指 定 MESSAGE-ID。 通過 ABAP/4 編輯器,選 擇“編輯 -語句.” ,可以很容 易
18、地將 MESSAGE 包括到程序 中。也可以 從這里更改 MESSAGE。 關(guān)于報表中 MESSAGE 處理的詳細(xì) 信息,參見 列表中的消 息 (頁 Error! Not a valid link.) 。例如,現(xiàn)在 選擇“承運(yùn) 方 ID”的第 一個輸入字 段,按下 F1,然后 選擇“技術(shù) 信息”,以 找到選擇表 的名稱:在字段“屏 幕字段”中 ,將看到名 稱 CARRID-LOW, 它是對應(yīng)于 選擇輸入的 選擇表的組 件。從這里 看到選擇標(biāo) 準(zhǔn)的名稱是 CARRID。 在上面所述 的相同過程 中,可以發(fā) 現(xiàn)把輸入字 段“從”和 “到”命名 為 CITY_FR 和 CITY_TO?,F(xiàn)在,可以 按
19、照下列方 法更改報表 程序:REPORT SAPMZTST.PARAMETERSDAY LIKE SY-DATUM DEFAULT SY-DATUM. TABLES SPFLI.INITIALIZATION.CITY FR = NEW YORK. CITY TO = FRFURT. CARRID-SIGN = I.CARRID-OPTION = EQ. CARRID-LOW= AA. APPEND CARRID.DAY+6(2) = 01.啟動 SAPMZTST 之后,選擇 屏幕如下:更改了選擇 標(biāo)準(zhǔn)的默認(rèn) 值和所有參 數(shù)。事件關(guān)鍵字 AT SELECTION-SCREEN 的選項使您 能夠在
20、處理 選擇屏幕時 為特定事件 創(chuàng)建過。在下列中說明這 些事件:在下列中即將介紹 這些選項。 詳細(xì)信息, 參見關(guān)于 AT SELECTION-SCREEN 的關(guān)鍵字文 檔。處理特殊輸 入字段要在處理選 擇屏幕的特 殊輸入字段 之后啟動過,請按 照下列方法 使用關(guān)鍵字 AT SELECTION屏幕:語法:AT SELECTION-SCREEN ON .系統(tǒng)處理了 變量 的輸入字段 之后,啟動 相應(yīng)過。如果從此 過中發(fā) 送 ERRORMESSAGE, 則系統(tǒng)再次 顯示選擇屏 幕,用戶僅 必須更改變 量 的輸入字段 。處理多重選 擇將特殊選擇 標(biāo)準(zhǔn)的復(fù)雜 選擇輸入到 選擇屏幕的 “多重選擇 ”窗口,并
21、 處理此窗口 之后(參見 SELECT-OPTIONS 語句的基本格式 (頁 217) 中的例子) ,可以調(diào)用 過 ,為 此,請按照 下列方法使 用 AT SELECTION-SCREEN 語句:語法AT SELECTION-SCREEN ON END OF .在處理選擇 標(biāo)準(zhǔn) 的“復(fù)雜選 擇”窗口結(jié) 束處啟動相 應(yīng)過表 中的條目。 可以使用這 些選項檢查 內(nèi)將邏輯數(shù)據(jù) 庫 F1S 附加到下列 報表程序中 。 REPORT SAPMZTST MESSAGE-ID HB. TABLES SPFLI.AT SELECTION-SCREEN ON END OF CARRID. LOOP AT CAR
22、RID.IF CARRID-HIGH NE .IF CARRID-LOW IS INITIAL. MESSAGE W020.ENDIF. ENDIF.ENDLOOP.啟 動 SAPMZTST 之后,如果 用戶在選擇 屏幕上單擊 箭頭圖標(biāo),然后在“多 重選擇”窗 口中輸入范 圍選擇的上 限,而不輸 入下限,則 出現(xiàn)下列框,并發(fā) 出警告:將邏輯數(shù)據(jù) 庫 F1S 附加到下列 報表程序。 REPORT SAPMZTST MESSAGE-ID HB. TABLES SPFLI.AT SELECTION-SCREEN ON CITY FR. IF CITY FR NE NEW YORK.MESSAGE E
23、010.ENDIF.如果用戶沒 有在選擇屏 幕中的字段 “從”中“NEW YORK” ,則下列 ERROR MESSAGE 會出現(xiàn)在屏 幕的狀態(tài)欄 中,,直到用戶作 出正確輸入 。在表 T100 中,以此 ID HB 為例編寫了 MESSAGE 010 代碼。此報表使用 有 ID HB 的 MESSAGE。 啟動 SAPMZTST 之后,選擇 屏幕顯示在 邏輯數(shù)據(jù)庫 F1S 中定義的內(nèi) 容。一旦用 戶不把值輸 入到每個輸 入字段中, 下列錯誤信 息就將出現(xiàn) 在屏幕的狀 態(tài)欄中。在表 T100 中,以 ID HB 為此例子編 寫了 MESSAGE 000 代碼。創(chuàng)建輸入值 列表You 通過按照下
24、 列方法使用 AT SELECTION-SCREEN 語句,可以 為選擇屏幕 上的輸入字 段創(chuàng)建可能輸入值的列 表:語法AT SELECTION-SCREEN ON VALUE-REQUEST FOR .如果使用此 語句,在選 擇屏幕上選 定參數(shù)或選 擇標(biāo)準(zhǔn) 的輸入字段 時,會自動 緊跟著該字 段出現(xiàn)可能 的登錄按鈕 。必須在 AT SELECTION-SCREEN ON VALUE REQUEST 語句的過內(nèi)為 編寫建議值 列表程序。 用戶單擊可 能的登錄按 鈕或按下 F4 時,將顯示 此列表。如 何編寫這種 列表的代碼 是編程的范疇,并 在編寫字 - 和值 - 幫助程序 (頁 Error!
25、 Not a valid link.) 中作了介 紹。創(chuàng)建輸入字 段的幫助通過按照下 列方法使用 AT SELECTION-SCREEN 語句,可以 為選擇屏幕 上的輸入字 段創(chuàng)建自己 的幫助:語法AT SELECTION-SCREEN ON HELP-REQUEST FOR .如果使用此 語句,用戶 在選擇屏幕 上選擇 的輸入字段 ,并按下 F1 鍵時,將顯 示幫助文本 。必須在 AT SELECTION-SCREEN ON HELP REQUEST 語句的過內(nèi)編寫幫 助文本的程 序。如何編寫這種幫助 的代碼是編程的范 疇,并在 編寫字 - 和值 - 幫助程序 (頁 Error! Not a
26、 valid link.)中作了介紹 。處理單選按 鈕組在選擇屏幕 上處理完單 選按鈕組之 后(參見 在選擇屏幕 上創(chuàng)建單選 按鈕組 (頁 210) ),要啟動 過,請 按照下列方 法使用關(guān)鍵 字 AT SELECTION 屏幕:語法:AT SELECTION-SCREEN ON RADIOBUTTON GROUP .系統(tǒng)處理單 選按鈕組 后啟動相應(yīng) 過。如 果從過中發(fā)送 ERROR MESSAGE, 則系統(tǒng)又顯 示選擇屏幕 ,用戶只必 須更改單選 按鈕 的輸入字段 。只可以在報 表程序中使 用此語句。 在邏輯數(shù)據(jù) 庫程序中, 使用 PARAMETERS 和SELECT-OPTIONS 語句的
27、 HELP-REQUEST 選項(參見 關(guān)鍵字文檔 )。PARAMETERS FIELD(10).AT SELECTION-SCREEN ON VALUE-REQUEST FOR FIELD.參數(shù)如下:如果為 FIELD 編寫了建議 值列表,并 且用戶單擊 了可能的登 錄按鈕,則 將顯示它。只可以在報 表程序中使 用此語句。 在邏輯數(shù)據(jù) 庫程序中, 可以使用 PARAMETERS和 SELECT-OPTIONS 語句的 VALUE-REQUEST 選項(參見 關(guān)鍵字文檔 )。在表 T100 中,以此 ID HB 為例編寫了 MESSAGE 020 代碼。處理輸入字 段塊在選擇屏幕 上處理完元
28、素塊(參見創(chuàng)建元素塊 (頁 235) )之后啟動 過關(guān)鍵 字 AT SELECTION 屏幕:,請 按照下列方 法使用語法:AT SELECTION-SCREEN ON BLOCK .系統(tǒng)處理完 元素塊 時啟動相應(yīng) 過。如 果從此過再次 顯示選擇屏 幕,用戶只 必須更改塊 的輸入字段 。中發(fā)送 ERROR MESSAGE, 則系統(tǒng)選擇屏幕的 PBO要在每個 ENTER 的選擇屏幕 PBO 中啟動過,請使用 下列 AT SELECTION-SCREEN 語句:語法AT SELECTION-SCREEN OUTPUT.例如,在這 些事件中, 可以申請對 選擇屏幕上 的字段作出 修改。詳情 和例子,
29、參 見 給修改組分 配參數(shù) (頁 212) 。START-OF-SELECTION過的可 能。例如, 可以使用這 些過設(shè) 置內(nèi)表的值 ,或?qū)⑿畔?語句寫到輸 出屏幕上。在 START-OF-SELECTION 事件處,也 處理沒有附 加到事件關(guān) 鍵字的所有 語句, 或在 FORM-ENDFORM 塊后寫這些 語句(例子 參見 定義過(頁 ) )。REPORT SAPMZTST MESSAGE-ID HB. SELECTION-SCREEN BEGIN OF BLOCK PART1WITH FRAME TITLE TEXT-001.PARAMETERS: NUMBER1 TYPE I,NUMBE
30、R2 TYPE I, NUMBER3 TYPE I.SELECTION-SCREEN END OF BLOCK PART1.AT SELECTION-SCREEN ON BLOCK PART1.IF NUMBER3 LT NUMBER2 OR NUMBER3 LT NUMBER1 OR NUMBER2 LT NUMBER1.MESSAGE E040.ENDIF.啟動 SAPMZTST 后,用戶可 以把號碼輸 入到塊 PART1 的輸入字段 中。如果他 沒有按升序 輸入號碼,則下列 ERROR MESSAGE 將出現(xiàn)在狀 態(tài)欄中:在表 T100 中,以此 ID HB 為例編寫了 MESSAGE
31、040 代碼。REPORT SAPMZTST MESSAGE-ID HB.PARAMETERS: R1 RADIOBUTTON GROUP RAD1 DEFAULT X, R2 RADIOBUTTON GROUP RAD1,R3 RADIOBUTTON GROUP RAD1.AT SELECTION-SCREEN ON RADIOBUTTON GROUP RAD1.IF R1 = X.MESSAGE I030.ENDIF.如果用戶沒 有更改選擇 屏幕上的單 選按鈕,將 出現(xiàn)下列 INFORMATION MESSAGE:在表 T100 中,以此 ID HB 為例編寫了 MESSAGE 030 代
32、碼。GET 對于有附加 邏輯數(shù)據(jù)庫 的報表程序 ,最重要的 事件是邏輯 數(shù)據(jù)庫程序 從數(shù)據(jù)庫表 中了行 的時刻(參 見用邏輯數(shù)據(jù) 庫數(shù)據(jù) (頁 11) )。要在此 事件處啟動 過語句:,請 按照下列方 法使用 GET語法GET FIELDS .此語句之后 ,可以使用 數(shù)據(jù)庫表 的當(dāng)前行。 在表工作區(qū) 中提供了數(shù) 據(jù)。邏輯數(shù)據(jù)庫 從所有數(shù)據(jù) 庫表中 所有列,沒 有為邏輯數(shù) 據(jù)庫中的字 段指定這些 數(shù)據(jù)庫表, 并且這些數(shù) 據(jù)庫表優(yōu)于 邏輯數(shù)據(jù)庫 路徑上 的 ( 參見 從報表程序 中控制數(shù)據(jù) 庫 (頁 14) )。不管是 否為這些表 指定了 GET 語句,這都 與事實無關(guān) 。只有在程 序中使用 TA
33、BLES 語句表 之后,才可 以這些 表的數(shù)據(jù)。對于為邏輯 數(shù)據(jù)庫中的 選擇字段指 定的表,性 能可以更好 一些(參見 編輯選擇 (頁 Error! Not a validlink.) )。如果這 樣的表優(yōu)于 邏輯數(shù)據(jù)庫路徑上 的 , 并且沒有為 它們指定 GET 語句,則系 統(tǒng)只從在程 序中用 TABLES 語句的 表中所 有列的數(shù)據(jù) 。從在程序 中沒有用 TABLES語句的 表中,系統(tǒng) 只關(guān)鍵 字段(邏輯 數(shù)據(jù)庫需要 關(guān)鍵字段生 成路徑 )。使用 FIELDS 選項,可以 外在地指定 應(yīng)該由邏輯 數(shù)據(jù)庫的數(shù)據(jù)庫表 的列。在 外在地指定 數(shù)據(jù)庫表的 字段 (頁 ) 中對 FIELDS 選項作
34、了介 紹。外在地指定 數(shù)據(jù)庫表的 字段要指定在 GET 事件處使用 數(shù)據(jù)庫表的 哪一個字段 ,請按照下 列方法使用 GET 語句的 FIELDS 選項:語法GET LATE FIELDS .使用 FIELDS 選項,從數(shù) 據(jù)庫表 中,邏輯數(shù) 據(jù)庫程序只FIELDS 選項的使用 可以引起相 應(yīng)性能改善 。字段 . 和關(guān)鍵字段 。將邏輯數(shù)據(jù) 庫 F1S 附加到了下 列報表程序 。F1S 的結(jié)構(gòu)為:報表程序 SAPMZTST 的代碼為:REPORT SAPMZTST.TABLES: SPFLI, SFLIGHT, SBOOK. START-OF-SELECTION.WRITE Test Progra
35、m fET.GET SPFLI. SKIP.WRITE: / From:, SPFLI-CITYFROM, To:, SPFLI-CITYTO.GET SFLIGHT. SKIP.WRITE: / Carrid:, SFLIGHT-CARRID, Connid:, SFLIGHT-CONNID.ULINE.GET SBOOK.WRITE: / Fldate:,SFLIGHT-FLDATE, Bookid:,SBOOK-BOOKID, Luggweight, SBOOK-LUGGWEIGHT.ULINE.啟動 SAPMZTST 之后,假定 用戶按照下 列方法填寫 選擇屏幕:這樣,輸出 列表的第一
36、 部分如下:注意,在 GET SBOOK 后的過中使用表工 作區(qū) SPFLI。邏輯數(shù)據(jù)庫 不所有 非關(guān)鍵字段 的字段和所 有沒有在 FIELDS 后列出的字 段。在 GET 事件中,沒 有使用 FIELDS 選項定義表 工作區(qū) 的相應(yīng)組件 內(nèi)容。也沒 有在數(shù)據(jù)庫 表的 GET 事件中定義 它們,這些 數(shù)據(jù)庫表次 于邏輯數(shù)據(jù) 庫分層中的 。 不應(yīng)該定位 這些未定義 的字段,并 且不調(diào)用外 部子程序, 程序使用這 些字段。GET LATE要在系統(tǒng)處 理完邏輯數(shù) 據(jù)庫(它們 在層次上低 于特定數(shù)據(jù) 庫表)的所 有數(shù)據(jù)庫表 之后啟動過請按 照下列方法 使用事件關(guān) 鍵字 GET:,語法GET LATE
37、FIELDS .與只使用 SELECT 語句的報表 程序(參見方法比 較 (頁 12) 中的表)相 似,在數(shù)據(jù) 庫表 的 SELECT 循環(huán)中,GET LATE 語句的過直接出現(xiàn) 在 ENDSELECT 語句的前面 。FIELDS 選項的作用 與 GET 事件相同, 在 外在地指定 數(shù)據(jù)庫表的 字段 (頁 ) 中對它作了解釋。將邏輯數(shù)據(jù) 庫 F1S 連接到下列 報表程序。REPORT SAPMZTST.TABLES: SPFLI, SFLIGHT, SBOOK. DATA WEIGHT TYPE I VALUE 0.START-OF-SELECTION.WRITE Test Program f
38、ET LATE.GET SPFLI. SKIP.WRITE: / From:, SPFLI-CITYFROM, To:,SPFLI-CITYTO, Connid:, SPFLI-CONNID.ULINE.GET SFLIGHT. SKIP.WRITE: / Date:, SFLIGHT-FLDATE.GET SBOOK.WEIGHT = WEIGHT + SBOOK-LUGGWEIGHT.GET SFLIGHT LATE.WRITE: / Total luggage weight =, WEIGHT.假定邏輯數(shù) 據(jù)庫 F1S 為字段選擇 指定了數(shù)據(jù) 庫表 SFLIGHT 和 SBOOK。 這樣
39、,可以 寫下列程序 :TABLES: SFLIGHT, SBOOK.GET SFLIGHT FIELDS CARRID CONNID. GET SBOOK FIELDS CUSTOMID.GET SFLIGHT LATE FIELDS PLANETYPE.在此例中, 系統(tǒng)從 SFLIGHT 中字段 MANDT、 CARRID、 CONNID、 FLDATE 和PLANETYPE從 SBOOK 中字段 MANDT、 CARRID、 CONNID、 FLDATE 和 BOOKID注意,系統(tǒng) 從 SFLIGHT 中字段 MANDT 和 FLDATE from SFLIGHT, 這是因為MANDT 和
40、 FLDATE 是此表的關(guān) 鍵字段。在此例子中 ,從 SBOOK 中只關(guān) 鍵字段。到報表 程序的邏輯 數(shù)據(jù)庫必須 為字段選擇 指定數(shù)據(jù)庫 ( 參見 編輯選擇(頁 Error! Not a valid link.) )。END-OF-SELECTION要在系統(tǒng)和處理完 邏輯數(shù)據(jù)庫的所有數(shù)據(jù)庫表之后定義過,請使用關(guān)鍵字END-OF-SELECTION。終止過ABAP/4 提供了好幾 種離開過的語句。 取決于當(dāng)前事件,不同 語句可以將程序流轉(zhuǎn)向 不同過程塊。可以無條 件地或有條 件地全部離 開過的 語句。下列介 紹輯數(shù)據(jù)庫數(shù)據(jù)庫表 ,GET 語句后的過如果使用邏終止有 某些特殊性 質(zhì)。另外兩 個介紹
41、無條件地離 開過可以通過下 列方法無條 件地離開過:轉(zhuǎn)向 END-OF-SELECTION可以立即離 開任何過,并通過 按照下列方 法使用 STOP 語句轉(zhuǎn)向 END-OF-SELECTION 過:語法STOP.運(yùn)行 STOP 語句后,系 統(tǒng)執(zhí)行 END-OF-SELECTION 過,并 停止運(yùn)行程 序。將邏輯數(shù)據(jù) 庫 F1S 附加到下列 報表程序:REPORT SAPMZTST.TABLES: SPFLI, SFLIGHT, SBOOK.將邏輯數(shù)據(jù) 庫 F1S 連接到下列 報表程序。REPORT SAPMZTST. TABLES SBOOK.DATA NUMBER TYPE I VALUE
42、0.START-OF-SELECTION.WRITE Test Program for END-OF-SELECTION. SKIP.WRITE: / CITY_FR, CITY_TO.GET SBOOK.NUMBER = NUMBER + 1.END-OF-SELECTION.WRITE: / Total number of bookings:, NUMBER.對于 GET (頁 ) 例子中的相 同選擇,輸 出如下:在事件 GET SBOOK 處計算從法福到柏 林的預(yù)訂號 并編寫到事 件END-OF-SELECTION 的屏幕中。ULINE. WEIGHT = 0.對于 GET (頁 ) 例
43、子中的相 同選擇,輸 出屏幕的第 一部分如下 :在事件 GET SBOOK 處為每個航 班計算行李 總重量。將 它寫到屏幕 上,并在事 件GET SFLIGHT LATE 處重新設(shè)置 它。轉(zhuǎn)向輸出屏 幕可以立即離 開任何過(除在 AT 事件以外) ,并通過按 照下列方法 使用 EXIT 語句轉(zhuǎn)向輸 出屏幕:語法EXIT.EXIT 語句后,系 統(tǒng)顯示輸出 列表,并停 止運(yùn)行程序 。它不執(zhí)行 END-OF-SELECTION 過。離開 AT 事件如果在 AT 事件的過中使用 EXIT 語句(有以 AT 開頭的事件 關(guān)鍵字的所 有事件,參 見 事件及其事 件關(guān)鍵字 (頁 ) ),則系統(tǒng) 離開此過,并
44、轉(zhuǎn)向 下一個出現(xiàn) 事件的過。在所有其他 事件的過中,EXIT 轉(zhuǎn)向輸出屏 幕。關(guān)于 EXIT 語句在循環(huán) 中如何起作 用的詳細(xì)信 息,參見 中止循環(huán) (頁 720) 。將邏輯數(shù)據(jù) 庫 F1S 附加到下列 報表程序:REPORT SAPMZTST.TABLES: SPFLI, SFLIGHT, SBOOK. START-OF-SELECTION.WRITE Test Program for EXIT.GET SBOOK.WRITE: Bookid, SBOOK-BOOKID. EXIT.END-OF-SELECTION.WRITE: / End of selection.輸出如下:Test Pr
45、ogram for EXIT Bookid 00010001SBOOK 的第一行之 后,系統(tǒng)直 接處理輸出 列表,而不 是END-OF-SELECTION 語句塊。EXIT 語句在 AT 事件的過中的功能 不同(參見 離開 AT 事件 (頁 ) )。關(guān)于 EXIT 語句在循環(huán) 中有何種功 能的詳細(xì)信 息,參見 中止循環(huán) (頁 720) 。START-OF-SELECTION.WRITE Test Program for STOP.GET SBOOK.WRITE: Bookid, SBOOK-BOOKID. STOP.END-OF-SELECTION.WRITE: / End of select
46、ion.輸出如下:Test Program for STOP Bookid 00010001End of selection從 SBOOK 中第一 行之后,系 統(tǒng)直接執(zhí)行 END-OF-SELECTION 語句塊。有條件地離 開過通過按照下 列方法使用 CHECK 語句的兩個 變式,可以 有條件地離 開任何過:語法CHECK .如果 CHECK 語句中的條 件為假,則 系統(tǒng)離開過并轉(zhuǎn)向 下一個出現(xiàn) 事件的過。對于, 可以使用 編程邏輯表達(dá)式 (頁 73) 中介紹的任 何邏輯表達(dá) 式。語法CHECK .如果數(shù)據(jù)庫 表的表工作 區(qū)的內(nèi)容與 選擇表 中的條件不 匹配,并且 將選擇表 附加到該數(shù) 據(jù)庫
47、表(參 見在 GET 事件中與 CHECK 語句一起使 用選擇表 (頁 229) ),則系統(tǒng) 離開過。將邏輯數(shù)據(jù) 庫 F1S 附加到下列 報表程序:REPORT SAPMZTST.TABLES: SPFLI, SFLIGHT, SBOOK. START-OF-SELECTION.CHECK CITY FR NE .WRITE: / Selected City-From:, CITY FR. ULINE.CHECK CITY_TO NE .CHECK 語句是與上 下文緊密相 關(guān)的。關(guān)于 GET 事件中下一 個出現(xiàn)事件 的定義,參 見 有條件地離 開 GET 事件 (頁 ) 。關(guān)于 CHECK 語
48、句在循環(huán) 中如何起作 用的詳細(xì)信 息,參見 中止循環(huán) (頁 720) 。將邏輯數(shù)據(jù) 庫 F1S 附加到下列 報表程序:REPORT SAPMZTST.TABLES: SPFLI, SFLIGHT, SBOOK. DATA FLAG.AT SELECTION-SCREEN.IF CARRID-LOW IS INITIAL. FLAG = X.EXIT. ENDIF.START-OF-SELECTION. IF FLAG = X.WRITE / No selection for CARRID made. EXIT.ENDIF.GET SPFLI.GET SFLIGHT.GET SBOOK.END-
49、OF-SELECTION.WRITE / End of Selection.如果用戶沒 有在“承運(yùn) 方 ID”字段 中輸入值, 則輸出如下 :No selection for CARRID made注意,EXIT 語句是與上 下文緊密相 關(guān)的。第一 個 EXIT 語句后,也 就是執(zhí)行START-OF-SELECTION 塊。第二個 EXIT 語句后,將 顯示輸出列 表。無條件地離 開 GET 事件要無條件地 離開 GET 事件的過,有四種 可能:轉(zhuǎn)向當(dāng)前數(shù) 據(jù)庫表的下 一行要離開 GET 語句的過,并轉(zhuǎn)向 邏輯數(shù)據(jù)庫 同一層上的 下一 GET 事件,請按 照下列方法 使用REJECT:語法RE
50、JECT.此語句后, 系統(tǒng)立即處 理相同數(shù)據(jù) 庫表的下一 GET 事件。這意 味著它從當(dāng) 前表中啟動 相同過的新行。轉(zhuǎn)向數(shù) 據(jù)庫表的下 一行要離開 GET 語句的過,并執(zhí)行 邏輯數(shù)據(jù)庫REJECT 語句:的下一 GET 事件,請按 照下列方法 使用語法REJECT .將邏輯數(shù)據(jù) 庫 F1S 連接到下列 報表程序。REPORT SAPMZTST.TABLES: SPFLI, SFLIGHT, SBOOK. GET SFLIGHT.SKIP.WRITE: / Connid:, SFLIGHT-CONNID, Carrid:, SFLIGHT-CARRID, Fldate:, SFLIGHT-FLDATE.ULINE.GET SBOOK.IF SBOOK-BOOKID GT 00010002.REJECT. ENDIF.WRITE: / Bookid:, SBOOK-BOOKID.對于 GET (頁 ) 例子中的相
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版國有土地臨時用地合同3篇
- 二零二五版高級別別墅居住權(quán)購置與買賣合同3篇
- 醫(yī)院2025年度物流配送服務(wù)合同2篇
- 二零二五年度交通樞紐“四害”滅治與旅客健康服務(wù)合同3篇
- 二零二五版數(shù)字藝術(shù)版權(quán)保護(hù)與侵權(quán)處理合同范本3篇
- 二零二五版宅基地使用權(quán)轉(zhuǎn)讓及農(nóng)村土地流轉(zhuǎn)收益分配合同2篇
- 二零二五年戶外廣告牌場地租賃及新媒體營銷合同3篇
- 二零二五年投影機(jī)采購與燈光音響租賃服務(wù)合同3篇
- 二零二五版建筑工程項目招投標(biāo)代理中介費(fèi)合同3篇
- 二零二五版汽車零部件鈑金加工及機(jī)加服務(wù)采購合同模板3篇
- 青島版(五年制)四年級下冊小學(xué)數(shù)學(xué)全冊導(dǎo)學(xué)案(學(xué)前預(yù)習(xí)單)
- 退學(xué)費(fèi)和解協(xié)議書模板
- 2024至2030年中國對氯甲苯行業(yè)市場全景調(diào)研及發(fā)展趨勢分析報告
- 智能教育輔助系統(tǒng)運(yùn)營服務(wù)合同
- 心功能分級及護(hù)理
- DLT 572-2021 電力變壓器運(yùn)行規(guī)程
- 重慶育才中學(xué)2025屆化學(xué)九上期末教學(xué)質(zhì)量檢測試題含解析
- 成都市2022級(2025屆)高中畢業(yè)班摸底測試(零診)數(shù)學(xué)試卷(含答案)
- 【云南省中藥材出口現(xiàn)狀、問題及對策11000字(論文)】
- 服裝板房管理制度
- 河北省興隆縣盛嘉恒信礦業(yè)有限公司李杖子硅石礦礦山地質(zhì)環(huán)境保護(hù)與治理恢復(fù)方案
評論
0/150
提交評論