第203章處理錯誤和訊息

2022-10-08 20:45:10 字數 3436 閱讀 5167

概覽內容錯誤處理簡介

檢查螢幕欄位的有效性

理解自動字段檢查

檢查螢幕流邏輯中的字段

在 abap/4 中檢查字段

檢查單個字段

檢查多個字段

有條件地呼叫模組

條件 field 語句

條件 chain 語句

避免自動字段檢查

發布訊息

傳送訊息

建立訊息類

建立訊息

當使用者鍵入螢幕輸入時 ,事務在使用此輸入之前必須檢查其是否合法 。sap 系統提供了錯誤處理的特徵以盡可能地簡化字段檢查過程 。這些特徵包括用於編輯錯誤處理程式的關鍵字,以及對話處理執行時間環境方面的因素:

_ 自動字段檢查(由系統執行)

某些字段檢查以儲存在 abap/4 字典上的資訊為基礎, 由系統自動執行。

_ field 和 chain 語句(在流邏輯語言中 )

field 和 chain 流邏輯語句允許使用者設計自己的字段檢查。field和 chain 告訴系統正在檢查哪些字段,以及系統是在流邏輯中進行檢查還是呼叫abap/4模組。如果發現錯誤,則系統為使用者輸入一錯誤對話。

_ message 語句(在 abap/4中 )

message語句(在 abap/4中 )允許使用者從 abap/4 程式中輸出訊息。abap/4 程式通過輸出錯誤訊息或警告將錯誤通知系統 。相應地, 系統為使用者輸入錯誤對話。

_ 錯誤對話 (由系統執行)

系統或 abap/4 模組都可以檢測錯誤。 無論是哪種情況,只要發現錯誤, 系統就自動重新顯示螢幕並輸出訊息。

錯誤通常是由於特定字段。重新顯示時,引起錯誤的字段允許輸入, 而其它所有欄位則禁止輸入。系統將游標定位於錯誤欄位中,並且要求使用者重新輸入。然後重複字段檢查的過程。

有關資訊由下列主題提供:

錯誤處理簡介 (頁 3–2)

檢查螢幕欄位的有效性 (頁 3–4)

發布訊息 (頁 3–13)

示例事務: 檢查字段輸入 (頁 3–17)

在正常的對話處理過程中,事務逐屏予以處理 。然而,如果出現錯誤 ,則系統重新顯示出錯的螢幕。同時顯示一則訊息,並且 ,如果錯誤涉及到字段輸入,那麼該欄位允許輸入。

(所有其它字段保持固定值 。)這對使用者怎樣?程式如何告訴 abap/4 處理器有必要重新顯示 ?

請看錯誤處理示例事務 tz31。 tz31 (開發類 sdwa) 是用於顯示和更新航班資訊的小事務。該事務允許系統自動進行字段檢查,而且也包含指導其它錯誤檢查的邏輯。

正常情況下 ,使用事務時,總是輸入航空公司和航班識別符號並按下 enter 。然後系統以更新模式顯示所有字段細節。要作更改,請鍵入新資訊並儲存。

當輸入錯誤時會發生什麼情況?假定未鍵入所需的資訊而只按下 enter。 (其中帶「 ?」的字段是所需的輸入字段。) 系統自動檢查,並向您傳送訊息:

tz31 還檢查系統忽略的事情 。例如,更新顯示時, 輸入了不存在的機場**會發生什麼情況?程式向您傳送訊息:

在該螢幕上 ,只能更改機場字段。 所有其它輸入都是固定的。當更正機場並重新輸入時,事務繼續其它處理。

通過用 tz31 測試,將看到進行幾種字段檢查。 一些由系統自動處理, 而一些由程式處理:

_ 要求輸入的字段有輸入嗎?(自動)

「航空公司 「和「航班號」欄位在螢幕製作器中具有要求輸入的屬性 。系統自動檢查這些字段是否從使用者獲得輸入 。

_ 輸入的航空公司存在嗎? (自動)

在螢幕製作器中,「航空公司」字段宣告為表字段 spfli-carrid。 在字典中, carrid 欄位與檢查表 scarr 有外部關鍵字關係。結果,系統自動檢查 scarr 中是否包含所有 spfli-carrid 的輸入。

_ 該航空公司的航班號存在嗎?( abap/4)

事務 tz31 中的 abap/4 模組(check_flight) 檢查為給定航線輸入的航班號是否存在。

_ 起飛/到達城市:它們存在嗎? (自動)

「起飛城市 」字段(spfli-cityfrom) 是檢查表 sgeocity 的外部關鍵字。系統自動檢查在 sgeocity 表中是否找到該字段的輸入。

_ 起飛/到達機場:它們存在嗎? (abap/4)

abap/4 模組檢查輸入的機場是否存在。

該章其餘部分講述如何設計處理錯誤的程式:

檢查螢幕欄位的有效性 (頁 3–4)

發布訊息 (頁 3–13)

關於如何實現事務 tz31 的討論,參見:

示例事務: 檢查字段輸入 (頁 3–17)

如果想在系統中使用事務 tz31, 請記住,可以使用資料瀏覽器查詢給定航空公司**的有效航班號。 要訪問資料瀏覽器,請進入物件瀏覽器(在工作台中), 然後選擇「 環境 -> 資料庫瀏覽器 -> **目錄」 。

r/3 系統提供檢查螢幕欄位的各種方法 :

_ 由系統執行的自動字段檢查

當適合進行自動字段檢查時,使用它最容易。 系統在儲存於 abap/4 字典的字段資訊的基礎上進行檢查 。

_ 在螢幕流邏輯中進行的檢查

可以在螢幕的流邏輯中指定某些字段檢查。使用流邏輯語句 field...values...

來完成此操作,該語句指定螢幕欄位的可能值列表。系統甚至不輸入 abap/4 模組,而檢查這些值的螢幕字段輸入。結果, 沒有任何可用的 abap/4 **就可以設計並測試螢幕。

_ 在 abap/4 中進行檢查

當自動字段檢查和 field...values... 流邏輯語句不夠靈活時 ,可以編碼 abap/4 模組以執行字段檢查。

要觸發該模組的呼叫, 則可以在螢幕流邏輯中編碼 field...module... 流邏輯語句 。

詳細資訊, 參見下列主題:

理解自動字段檢查 (頁 3–5)

檢查螢幕流邏輯中的字段 (頁 3–6)

在 abap/4 中檢查字段 (頁 3–7)

系統在螢幕欄位中自動執行某些有效性檢查。 在使用者輸入之後和 pai 處理開始之前執行這些檢查。執行的自動檢查型別如下:

_ 要求的輸入

在螢幕製作器中,可以設定欄位的要求輸入( 「要求輸入 」)屬性。 完成此操作之後,系統就要求使用者在輸入 pai 處理之前對該字段作相應的輸入。

_ 正確資料格式

在螢幕製作器中,每個欄位都有資料格式。該格式限制了有效輸入的種類。例如 ,dats 字段(日期字段)是格式為 yyyymmdd 的 8 字元的字串。

所有字元都必須是數字。子字串 mm 和 dd 必須分別小於或等於 12 和 31。對於輸入的給定月值,系統還檢查日值是否有效。

當使用者輸入不符合資料格式要求的值時,系統重新顯示螢幕直到更正輸入為止。

_ 欄位的有效值

在詞典中, 有兩種方式將字段值限制到允許的集合中。字段可以與其它表存在外部關鍵字關係,或者它的域可為該字段指定固定值列表。 對外部關鍵字字段,系統檢查在相關檢查表中能否找到使用者的輸入值 。

對具有已定義固定值列表的字段 ,系統確保使用者的輸入值在列表中 。

ABAP語法詳解教材第203章處理錯誤和訊息

概覽內容錯誤處理簡介 檢查螢幕欄位的有效性 理解自動字段檢查 檢查螢幕流邏輯中的字段 在 abap 4 中檢查字段 檢查單個字段 檢查多個字段 有條件地呼叫模組 條件 field 語句 條件 chain 語句 避免自動字段檢查 發布訊息 傳送訊息 建立訊息類 建立訊息 當使用者鍵入螢幕輸入時 事務在...

第3章中藥前處理和第4章

第1節粉碎與篩析 一 粉碎的含義 目的與基本原理 1 含義是將大塊固體物料借助機械力破碎成適宜程度的顆粒或細粉的操作技術。2 目的有利於提高難溶性藥物的溶出速度以及生物利用度 便於製備各種藥物劑型 有助於藥物中有效成分的浸出 便於調配 服用 鯉魚新鮮藥材的乾燥和貯存。3 基本原理將大塊固體物料借助機...

處理學生錯誤的態度和藝術

江西省崇義縣章源中英文實驗小學駱炳華 課堂是允許學生出錯誤的地方,我們的教學如果沒有錯誤,將是不完美的。為此,我認為廣大教師應合理利用 錯誤 這一資源,促進學生情感 態度 價值觀的和諧發展。下面我把我在實踐過程中的幾點經驗與你一起分享 索性將錯就錯,讓學生在爭論中明理。對於學生在課堂上出現的錯誤,教...