abap內(nèi)部培訓資料_第1頁
abap內(nèi)部培訓資料_第2頁
abap內(nèi)部培訓資料_第3頁
abap內(nèi)部培訓資料_第4頁
abap內(nèi)部培訓資料_第5頁
已閱讀5頁,還剩236頁未讀, 繼續(xù)免費閱讀

付費下載

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

abap內(nèi)部培訓資料SAP最初開發(fā)ABAP/4(高級商業(yè)應用程序設計)語言僅為內(nèi)部使用,為應用程序員提供優(yōu)化的工作環(huán)境。通過持續(xù)的改進和修改以滿足商業(yè)領域的需要?,F(xiàn)在,ABAP/4已成為SAP開發(fā)所有自己的應用程序的僅有工具。SAP客戶用ABAP/4進行其自身開發(fā)。如此的開發(fā)對R/3標準解決方案適應專門咨詢題專門重要。ABAP/4開發(fā)工作平臺包含所有用于創(chuàng)建和愛護ABAP/4程序的工具。ABAP/4的可講明特性使其易于生成、測試并運行程序的中級版本,以便今后生成最終版本。此過程也叫做早期原形處理,意味著您不必丟棄中級版本。ABAP/4是第四代支持結構化程序設計的語言。它合并了所有通常的操縱結構和模塊化概念。在ABAP/4開發(fā)寶典中文版的第一部分,對ABAP/4的差不多特性進行了詳細描述。這些特性包括:· ABAP/4包括- 帶有各種類型和結構的聲明數(shù)據(jù)的聲明元素- 數(shù)據(jù)制作的操作元素- 操縱程序流的操縱元素- 反應外部事件的事件元素· ABAP/4支持多種語言。文本摘要(例如,標題、頁眉和其他文本)將按照程序代碼分不儲備。您能夠隨時在不改變程序代碼的情形下更換、轉換和愛護這些文本摘要?!?ABAP/4支持商業(yè)數(shù)據(jù)類型和操作。您能夠用專門日期和時刻字段進行運算。系統(tǒng)會自動執(zhí)行必需的類型轉換。· ABAP/4提供一系列功能處理字符串。· ABAP/4包含一個叫OpenSQL的SQL子集。用OpenSQL,您能夠讀取和訪咨詢數(shù)據(jù)庫表,與所用的數(shù)據(jù)庫系統(tǒng)無關。· ABAP/4承諾您定義和處理內(nèi)部表,該表只在運行程序時存在。內(nèi)部表使其更容易處理數(shù)據(jù)表,并關心使用程序中的復雜數(shù)據(jù)結構。· ABAP/4承諾您定義和調用子程序。也能夠調用其他程序的子程序。參數(shù)能夠以各種方式從子程序傳遞或傳遞到子程序?!?ABAP/4包含一種專門子程序,叫做功能模塊。您能夠在中央庫中創(chuàng)建和愛護功能模塊。在調用程序和子程序之間功能模塊有一個明確定義的數(shù)據(jù)接口。它們能夠以調用程序的獨立模式進行分不測試。那個地點有兩種要緊的ABAP/4程序類型:· 報表程序報表程序用于分析數(shù)據(jù)庫表中的數(shù)據(jù)。這種分析的結果能夠顯示在屏幕上或發(fā)送到打印機上。邏輯數(shù)據(jù)庫支持報表程序。邏輯數(shù)據(jù)庫是專門的ABAP/4程序,使開發(fā)者不必編碼所有的數(shù)據(jù)庫訪咨詢。關于報表程序的詳細信息,參見《ABAP/4開發(fā)寶典中文版》的第二部分。· 對話程序將對話程序組織為包含對話模塊的模塊池。每個動態(tài)程序(由一個屏幕及其流邏輯組成的“動態(tài)程序”)都基于一個ABAP/4對話程序。流邏輯包含對ABAP/4對話模塊的調用。關于對話程序的詳細信息,參見《ABAP/4開發(fā)寶典中文版》的第三部分。語法約定本文檔中涉及的語法語句約定如下:關鍵字定義語句關鍵字和語句選項大寫。<變量>變量或代表所填入值的詞用尖括號括起來。在所使用的值中不要包括角括號(例外:字段符號)[]方括號表明用戶沒有使用、使用一個或多個附加選項。在用戶選項中不要包括方括號。|兩選項之間的豎條表明用戶能夠使用一個或另一個選項。()應將括號作為命令的一部分鍵入,逗號表示用戶可選擇多個選項,用逗號隔開,作為命令的一部分鍵入。<f1><f2>帶索引的變量表明用戶可列出多個變量。變量之間要采納與前兩個一樣的符號隔開。點號表明用戶可在此處放置上下文中承諾的任何東西。在語法指令中,關鍵字大寫,變量放進角括號中。在程序中鍵入關鍵字時能夠忽略大小寫。WRITE、Write和write完全一樣。輸出屏幕上的輸出或者采納屏幕彈出形式或者采納如下格式:

Screenoutput.第一部分ABAP/4基礎第一章創(chuàng)建簡單的ABAP/4程序本節(jié)描述如何創(chuàng)建簡單的ABAP/4程序。了解如何創(chuàng)建ABAP/4程序將有助于了解本指南中的其它主題。創(chuàng)建簡單的ABAP/4程序涉及下列差不多步驟:1. 命名程序2. 指定程序屬性3. 編寫程序代碼4. 測試程序本節(jié)也描述如何顯示或更換現(xiàn)有程序以及如何從編輯器中啟動程序。此處描述的創(chuàng)建新ABAP/4程序的過程適用于報表和短培訓程序。在開始編寫報表程序之前,用戶也許想先創(chuàng)建報表和短培訓程序以熟悉ABAP/4語法。要為新事務創(chuàng)建模塊儲備,能夠采納不同于報表程序的方式進行。關于如何為事務創(chuàng)建模塊儲備的詳細信息,參見ABAP/4模塊池。關于ABAP/4編輯器和調試過程的詳細信息,參見文檔ABAP/4工作臺工具。本節(jié)講述下列主題:一、命名程序要創(chuàng)建ABAP/4程序,請進行如下操作:1. 在“SAPR/3”初始屏幕上選擇“工具->ABAP/4工作臺”。顯現(xiàn)“ABAP/4開發(fā)工作臺”屏幕2. 選擇“ABAP/4編輯器”“ABAP/4編輯器初始屏幕”如下所示:3. 為在“程序”字段中創(chuàng)建的程序輸入名稱(關于創(chuàng)建程序名稱的詳細信息,參見命名程序規(guī)則(頁455))。4. 選擇“創(chuàng)建”。不論在“對象組件”下選擇什么,都顯現(xiàn)“ABAP/4:程序屬性”屏幕。當命名并創(chuàng)建程序后,能夠定義其屬性(關于定義程序屬性的詳細信息,參見指定程序屬性(頁457))。創(chuàng)建ABAP/4程序還有其它過程。例如,能夠:1. 選擇“ABAP/4開發(fā)工作臺”屏幕上的“對象掃瞄”。2. 選擇“對象列表”下的“程序”。3. 選擇“單一對象”下的“程序對象”。4. 輸入程序名并單擊“顯示”。如果程序不存在,則詢咨詢是否要創(chuàng)建它。關于對象掃瞄器及創(chuàng)建程序其它過程的詳細信息,參見文檔ABAP/4工作臺工具。二、命名程序規(guī)則當創(chuàng)建程序名稱時請遵循如下規(guī)則:_ 使用至少1個但不超過8個字符。_ 不要使用下列字符- 句點(.)- 逗號(,)- 空格()- 括號'('')'- 單引號(')- 雙引號(")- 等號(=)- 星號(*)- 元音變音(_,_,_,_,_,_)和'_'- 百分號(%)和下劃線(_):因為這些符號是SQL語句的通配符,因此也會導致咨詢題(參見為在程序中選定行指定條件)。SAP建議在程序名稱中不要使用它們。創(chuàng)建程序名稱時請遵守這些命名約定:_ 報表程序(以列表格式輸出數(shù)據(jù)分析):Yaxxxxxx或Zaxxxxxx。用應用程序區(qū)的分類字母替換a。用任何有效字符替換x。注意SAP報表程序遵守相似的命名約定:Raxxxxxx。_ 任何其它ABAP/4程序(培訓程序或事務程序):SAPMYxxx或SAPMZxxx。用有效字符替換x。注意標準SAPABAP/4程序遵守相似的命名約定:SAPMaxxx,其中a代表某應用程序區(qū)。三、命名程序屬性程序屬性決定程序屬于哪種應用程序以及程序所鏈接的邏輯數(shù)據(jù)庫。必須慎重輸入屬性以便系統(tǒng)能正確處理程序(有關程序屬性的詳細信息,參見重要的程序屬性(頁459))。差不多將名稱分配給程序并選擇“ABAP/4編輯器初始屏幕”上的“創(chuàng)建”時,顯現(xiàn)“ABAP/4:程序屬性”屏幕。要輸入程序屬性,請進行如下操作:1. 在字段“標題”中輸入程序標題。選擇描述程序功能的標題。系統(tǒng)自動將標題與文本摘要合并。如果以后要更換標題,請按如下操作進行:- 選擇“ABAP/4編輯器初始屏幕”上的“文本摘要”或“屬性”。- 選擇“更換”。2. 完成兩個強制字段:- 如果創(chuàng)建報表程序,則在“類型”字段中輸入1,如果創(chuàng)建模塊儲備,則在“類型”字段中輸入M。關于可能類型的列表,請單擊可能條目箭頭。- 在“應用程序”字段中為應用程序輸入分類字母,如財務會計輸入F。3. 如果創(chuàng)建報表(類型=1),請選擇“確定”。系統(tǒng)將特定報表屬性自動插入輸入字段。然后看見附加字段“邏輯數(shù)據(jù)庫”、“從應用程序”和“選擇屏幕”(版本)。4. 指定與程序有關的所有其他屬性(有關程序屬性的詳細信息,參見重要的程序屬性(頁459))。5. 選擇“儲存”以儲存屬性。6. 顯現(xiàn)“愛護對象名目條目”窗口。7. 輸入開發(fā)類。如果為培訓或測試目的創(chuàng)建程序(如某私有對象),則輸入開發(fā)類$TMP或選擇“邏輯對象”。8. 選擇“儲存”以儲存開發(fā)類。這將關閉“愛護對象名目條目”窗口并返回“ABAP/4:程序屬性”屏幕。9. 選擇“后退”離開屏幕。如果要直截了當轉到ABAP/4編輯器,請選擇“轉向->源代碼”。如果通過預定義開發(fā)類在“對象掃瞄器”中創(chuàng)建程序,則躍過步驟6到8。四、重要的程序屬性最重要的程序如下所述。關于其它屬性的詳細信息(或關于此處描述的屬性的詳細信息),請選擇有關的輸入字段,并單擊可能的條目箭頭。注意下述某些屬性只適用于報表程序并不適用于其他ABAP/4程序。類型除了類型1(如同報表的獨立程序)和M(模塊儲備),還應該注意類型I(包含程序)。包含程序是個獨立的程序,它有兩個要緊特點。第一,它包含程序代碼,不同程序都可使用該代碼。其次,它用于模塊化程序源代碼,該代碼分成邏輯有關部分。其中每個部分都儲備在不同的包含程序中。包含程序改善源代碼的可讀性并有助于愛護。(有關包含程序的詳細信息,參見包含程序)。應用程序“應用程序”字段包括應用程序的縮寫,如,財務會計縮寫為F。該必需條目使系統(tǒng)能將程序分配給適當?shù)臉I(yè)務區(qū)。開發(fā)類開發(fā)類對系統(tǒng)之間進行傳輸專門重要。執(zhí)行傳輸時,能夠將分配給某個開發(fā)類的工作臺對象組合起來。如果用戶在某組中工作,也許要將程序分配給現(xiàn)有開發(fā)類或創(chuàng)建新的開發(fā)類。分配給開發(fā)類$TMP的程序是私有對象同時不能傳輸?shù)狡渌到y(tǒng)。然而,也能夠通過選擇“ABAP/4編輯器初始屏幕”上的“程序->重新分配...”更換分配給程序的開發(fā)類。應用程序中的邏輯數(shù)據(jù)庫(僅報表程序)這些屬性決定報表使用哪個邏輯數(shù)據(jù)庫檢索數(shù)據(jù),以及邏輯數(shù)據(jù)庫屬于哪個應用程序。應用程序中數(shù)據(jù)庫名稱必須是唯獨的。然而,整個系統(tǒng)能夠包括數(shù)個同名數(shù)據(jù)庫。因此指定應用程序專門重要。關于邏輯數(shù)據(jù)庫的詳細信息,參見邏輯數(shù)據(jù)庫的特性和愛護。如果報表程序直截了當讀取數(shù)據(jù),而未使用邏輯數(shù)據(jù)庫(關于此主題的詳細信息,參見訪咨詢帶邏輯數(shù)據(jù)庫的數(shù)據(jù)庫表),則應該象通常一樣指定應用程序,但將“邏輯數(shù)據(jù)庫”字段置空。選擇屏幕版本(僅報表程序)如果沒有指定選擇屏幕版本,則系統(tǒng)在邏輯數(shù)據(jù)庫選擇標準、報表特定參數(shù)及選擇選項的基礎上自動創(chuàng)建選擇屏幕(關于選擇屏幕的詳細信息,參見使用選擇屏幕)。如果想使用自己的選擇屏幕,請在此字段中輸入號碼。該號碼必須小于1000。能夠通過按F4或在DBxxxSEL程序中找到現(xiàn)有選擇屏幕號碼(詳細信息,參見邏輯數(shù)據(jù)庫選擇)。大寫/小寫顯示和儲備時,如果要讓ABAP/4編輯器將程序代碼與輸入時保持相同,則請將該字段置空。如果選擇該字段,則所有的程序代碼(除了引號中的文本及注釋外)都轉換成大寫字母。屏幕顯示依靠于所使用的編輯器模式(詳細信息,參見文檔ABAP/4工作臺工具。編輯器鎖定如果設置此屬性,則其他用戶則不能修改、改名或刪除程序。只有用戶能夠更換程序、愛護屬性、文本摘要及文檔;或者解除鎖定。定點算術如果設置此屬性,系統(tǒng)則按照小數(shù)點位數(shù)將類型P字段四舍五入,或用零填補(關于類型P字段的詳細信息,參見數(shù)字數(shù)據(jù)類型(頁3-4))。這種情形下,不管在用戶主記錄中指定了什么,小數(shù)點字符總是句點(.)。通過變式啟動(僅報表程序)如果設置該屬性,則用戶只能夠使用變式啟動報表程序。在啟動程序之前,必須創(chuàng)建至少一個報表變式(關于創(chuàng)建變式的詳細信息,參見使用變式預設置選擇)。五、編寫程序在ABAP/4編輯器中編寫ABAP/4程序。能夠直截了當從“ABAP/4程序屬性”屏幕切換到編輯器,也能夠從“ABAP/4編輯器初始屏幕”中調用編輯器。請進行如下操作:1. 在“ABAP/4程序屬性”屏幕上選擇“轉向->源代碼”或“源代碼”。選定“源代碼”并選擇“ABAP/4編輯器初始屏幕”上的“更換”。顯現(xiàn)“ABAP/4編輯器編輯程序”屏幕。系統(tǒng)自動輸入第一個ABAP/4語句,如REPORT<reportname>orPROGRAM<programname>.關于<report/programname>,系統(tǒng)使用在“ABAP/4編輯器初始屏幕”上輸入的名稱。REPORT或PROGRAM語句能夠有不同的參數(shù),如LINE-SIZE、LINE-COUNT或NOSTANDARDPAGEHEADING。這些參數(shù)要緊適用于報表程序,用來分析數(shù)據(jù)并輸出結果列表。關于列表的詳細信息,參見[Seealso:第六章創(chuàng)建列表<file://nyf:\1\2\5\>]或參見REPORT和PROGRAM上的關鍵字文檔。2. 輸入程序代碼。3. 選擇“檢查”進行語法檢查。然后系統(tǒng)掃描程序代碼查找語法錯誤及不相容處。如果檢查出錯誤,則顯現(xiàn)消息報告它同時有可能的話將建議解決方案或更正。將光標放在適當?shù)奈恢蒙稀?. 選擇“儲存”儲存代碼。源文本儲備在程序庫中。六、測試程序測試程序檢查代碼是否正確工作。為測試目的要運行程序,選擇“ABAP/4編輯器編輯程序”屏幕上的“程序->執(zhí)行”。系統(tǒng)執(zhí)行該程序,如同從“ABAP/4編輯器初始屏幕”中啟動的一樣。例如,創(chuàng)建報表程序之后,則第一顯現(xiàn)從中輸入條件的選擇屏幕,然后是結果列表。如果正創(chuàng)建ABAP/4程序模塊,則必須在運行程序之前創(chuàng)建事務代碼(關于創(chuàng)建事務代碼的詳細信息,參見對話編程簡介)。出于測試目的,能夠先不進行儲存,直截了當運行某個不是模塊儲備部件的程序。編輯器保留一個包含更換的臨時版本。然而,測試終止后必須返回編輯器以確保所有更換都已儲存。七、顯示或更換程序本節(jié)要緊講明如何顯示或更換現(xiàn)有程序。此處有關的是技術步驟而不是實際代碼更換。要顯示或更換程序,請進行如下操作:1. 在“ABAP/4編輯器初始屏幕”上的“程序”字段中輸入要更換的程序名稱。2. 選擇“源代碼”并選擇“顯示”或“更換”。如果選擇“更換”則連續(xù)步驟3。如果選擇“顯示”,則看到“ABAP/4編輯器顯示程序”屏幕。此處也顯示源代碼,但不能進行更換。能夠通過選擇“顯示->更換”切換到更換模式。3. 如果其他用戶鎖定該程序對編輯器的訪咨詢,則系統(tǒng)顯示下列消息:User<name>forbadeallchanges.在這種情形下,不能更換程序。要更換程序,必須將它復制到新程序中并用新程序名再開始步驟1。否則,連續(xù)步驟5。4. 輸入對程序代碼的更換。5. 選擇“檢查”檢查語法。6. 儲存程序的更換版本。如果更換程序的私有版本(開發(fā)類$TMP),則趕忙儲存更換版本。如果從$TMP之外的開發(fā)類更換程序,則會顯現(xiàn)一個窗口,從中能夠指定更剛要求號(ChangeRequestNumber)。7. 運行程序測試它(關于測試的詳細信息,參見測試程序(頁11))。八、將事務代碼分配給程序能夠將事務代碼分配給類型1的單獨程序,以后就將這些程序作為事務代碼處理。在[Seealso:第三部分編寫ABAP/4事務<file://nyf:\1\3\>]中對事務有講明。進行如下操作:1. 按照本節(jié)上述主題所述,創(chuàng)建單獨程序。2. SAP菜單樹:工具->ABAP工作臺->開發(fā)->其他工具->事務,事務代碼:SE93。3. 填入事務代碼并選擇“愛護事務”屏幕上的“創(chuàng)建”4. 在下列對話屏幕上選擇“報表事務”;5. 在下列“創(chuàng)建報表事務”屏幕上填入所需條目“事務講明”和“程序”。6. 將事務代碼儲存在開發(fā)類中。開發(fā)類能夠用事務代碼SM30愛護視圖V_TDEVC來創(chuàng)建或修改。ABAP/4程序語法和格式本節(jié)講明ABAP/4語法,同時提供關于如何在ABAP/4中編程的建議。同時講明如何提升程序的清晰性,以及使用已有程序代碼模塊使編程變得更加容易。本節(jié)的主題包括:本節(jié)只是概述。關于單個ABAP/4組件的詳細信息,參見本寶典的相應主題。語法元素ABAP/4編程語言包括下列元素類型:語句ABAP/4程序包括單個ABAP/4語句。每條語句以關鍵字開頭,以句號終止。PROGRAMSAPMTEST.WRITE'FirstProgram'.該示例包含兩條語句,每行一條。關鍵字是PROGRAM和WRITE。程序在屏幕上顯示輸出(稱為列表)。此示例中,列表包括“第一個程序”行。關鍵字關鍵字是語句的第一個詞。它決定整個語句的意義。有四種不同類型的關鍵字: 講明性關鍵字這些關鍵字定義數(shù)據(jù)類型,或者講明程序能夠訪咨詢的數(shù)據(jù)對象。講明性關鍵字示例:TYPES,DATA,TABLES系統(tǒng)在生成程序期間處理講明性關鍵字,而不是在運行時。在程序代碼中獨立于其位置處理它們。為清晰起見,應該在程序開頭的“講明部分”指定所有講明性關鍵字。關于講明關鍵字的詳細信息,參見聲明數(shù)據(jù)。 事件關鍵字這些關鍵字在ABAP/4程序中定義處理塊。處理塊是當特定事件發(fā)生時進行處理的語句組。事件關鍵字示例如下:ATSELECTIONSCREEN,START-OF-SELECTION,ATUSER-COMMAND關于事件關鍵字的詳細信息,參見用事件操縱ABAP/4程序流。 操縱關鍵字這些關鍵字按照特定條件操縱ABAP/4程序流。操縱關鍵字示例如下:IF,WHILE,CASE關于操縱關鍵字的詳細信息,參見操縱ABAP/4程序流。 操作關鍵字當某事件(由事件關鍵字觸發(fā))和條件(由操縱關鍵字定義)發(fā)生時,這些關鍵字則處理數(shù)據(jù)(由講明性關鍵字定義)。操作關鍵字示例如下:WRITE,MOVE,ADD關于操縱關鍵字的詳細信息,參見[Seealso:第五章處理數(shù)據(jù)<file://nyf:\1\1\4\>]。注釋注釋是寫在ABAP/4程序語句之間用來向讀者講明其目的的文本摘要。注釋有導致系統(tǒng)忽略它們的專門字符標記。應該在內(nèi)部開發(fā)程序中使用注釋。注釋關心其他用戶明白得和更換程序。*************************************************PROGRAMSAPMTZST**CREATEDBYCARLBYTE,06/27/1995**LASTCHANGEBYRITADIGIT,10/01/1995**PURPOSE:DEMONSTRATION*************************************************PROGRAMSAPMTEST.*************************************************DECLARATIONPART*************************************************DATA*************************************************OPERATIONPART*************************************************所有以星號(*)開始的行差不多上注釋,同時被系統(tǒng)忽略(關于注釋的詳細信息,參見下一節(jié)語法結構中的注釋結構)。語法結構ABAP/4程序是具有特定結構的不同語句的順序。能夠在語句間插入注釋。分開的但相似的語句順序能夠組成鏈語句。語句結構下列圖表顯示ABAP/4語句的結構。ABAP/4沒有格式限制。能夠自由格式輸入語句。這意味著能夠縮排語句、在一行中寫幾條語句或者一條語句跨過幾行。在語句中必須以至少一個空格分開詞。系統(tǒng)也將行終止符講明為空格。語句以句號“.”作為終止,一條語句能夠跨過多行。程序段PROGRAMSAPMZTST.

WRITE'Thisisastatement'.也能夠如下編寫:PROGRAMSAPMTEST.WRITE'Thisisastatement'.或者如下:PROGRAM

SAPMTEST.

WRITE

'Thisis

astatement'.應該使用自由格式提升程序的可讀性,然而應幸免使用復雜格式。注釋結構能夠在程序的任意處插入注釋行。在程序中有兩種方法表明注釋: 如果要將整行變?yōu)樽⑨?,則在行開始處輸入星號(*)。 如果要將某行的一部分變?yōu)樽⑨?,則在注釋之前輸入雙引號(")。系統(tǒng)將由雙引號標明的注釋講明為空格。PROGRAMSAPMTEST.*ThefollowinglinecontainsaWRITEstatementWRITE'FirstProgram'."OutputonList本程序的第二行是不執(zhí)行的注釋。注釋由行開始處的星號(*)標明。在第三行,雙引號(")之后全部差不多上注釋同時不執(zhí)行。程序的其余部分為帶關鍵字PROGRAM和WRITE的可執(zhí)行語句。連接相似語句ABAP/4編程語言承諾將帶相同起始部分的連續(xù)語句連入鏈語句。要連接分開的語句,只要寫一次相同部分,同時在其后設置冒號(:)。在冒號后,列出語句的其余部分并用逗號(,)分開。請保證在最后部分之后設置句號以通知系統(tǒng)鏈的終止處。語句順序:WRITESPFLI-CITYFROM.

WRITESPFLI-CITYTO.

WRITESPFLI-AIRPTO.鏈語句:WRITE:SPFLI-CITYFROM,SPFLI-CITYTO,SPFLI-AIRPTO.在鏈中,冒號將語句的開始部分與可變部分分開。能夠在冒號(或逗號)之前或之后插入任意個空格。例如,能夠寫如下相同語句:WRITE:SPFLI-CITYFROM,

SPFLI-CITYTO,

SPFLI-AIRPTO.在鏈語句中,第一部分(冒號之前)不受語句關鍵字的限制。語句順序:SUM=SUM+1.SUM=SUM+2.SUM=SUM+3.SUM=SUM+4.鏈語句:SUM=SUM+:1,2,3,4.ABAP/4程序格式要編寫高質量的程序,不僅應該遵循命名約定(參見[Seealso:命名程序規(guī)則<file://nyf:\1\1\0\1\>]),而且要保持一定的ABAP/4程序格式標準。一開始定義數(shù)據(jù)就應該注意這些標準。在構建程序流時注意下列主題中的建議,同時盡可能地使用信息注釋。如果遵照這些建議,程序將 更具有可讀性 更容易測試和更換 更可靠要提升程序的質量,請使用下列技術:ABAP/4編輯器包括更容易分配程序格式的工具。該工具稱為整齊打印程序??s排語句塊應該將屬于一組的語句組成單一塊。關于語句塊的詳細信息,參見[Seealso:第六章操縱ABAP/4程序流<file://nyf:\1\1\5\>]。每塊至少縮排兩列,如下所示。使用模塊化工具要編出好的程序,應該使用ABAP/4模塊化工具(參見[Seealso:第八章模塊化ABAP/4程序<file://nyf:\1\1\7\>])。如果將大處理塊寫成子程序,則程序的邏輯結構容易識不。承諾按照執(zhí)行的任務排序子程序。子程序可能增加程序的總長度,然而您將發(fā)覺該方法大大增加清晰性,專門是在復雜程序的情形下。如果按系統(tǒng)執(zhí)行的順序排列子程序,則程序代碼專門容易讀。正確插入程序注釋應該幸免在語句行中放置注釋。在注釋行放置它們將提升程序的可讀性。要在程序中插入子程序標題和注釋,請使用ABAP/4編輯器可用的已有結構。在子程序標題中,講明調用程序的目的同時提供足夠的信息和參考。關于已有結構的詳細信息,參見插入已有關鍵字結構和在ABAP/4工作臺工具中的ABAP/4編輯器文檔。整齊打印程序使用整齊打印程序能夠更容易地遵循ABAP/4格式指南。整齊打印程序是ABAP/4編輯器的可選功能(有關詳細信息,參見ABAP/4工作臺工具中的ABAP/4編輯器文檔)。要從ABAP/4編輯器調用整齊打印程序,請選擇菜單“編輯->規(guī)范化打印機”。那個地點是整齊打印程序如何工作的示例。下面顯示在使用整齊打印程序之前程序的格式:PROGRAMZSAPMTEST.DATA:SUM1TYPEI,SUM2TYPEI,SUM3TYPEI.IFSUM1=SUM2.WRITE'Case1'.ELSEIFSUM1=SUM3.WRITE'Case2'.ENDIF.使用整齊打印程序之后,相同程序如下所示:PROGRAMZSAPMTEST.DATA:SUM1TYPEI,SUM2TYPEI,SUM3TYPEI.IFSUM1=SUM2.WRITE'Case1'.ELSEIFSUM1=SUM3.WRITE'Case2'.ENDIF.插入已有結構已有結構能夠簡化ABAP/4程序的編碼。它提供確切的語法,同時遵循ABAP/4格式指南。使用ABAP/4編輯器時能夠在程序中插入兩種已有結構:關于已有結構的詳細信息,參見ABAP/4工作臺工具中的ABAP/4編輯器文檔。插入已有關鍵字結構要在代碼中插入已有關鍵字結構,請進行下列操作:1. 將光標放在要插入結構的行上。2. 選擇菜單“編輯->模式”。3. 在顯現(xiàn)的對話框中,選擇帶單選按鈕的語句,或者在“其它結構”字段中輸入:要顯示所有可用的已有關鍵字結構的列表,請將光標放在“其它模式”字段上,同時單擊輸入字段右側的可能條目箭頭。所有首字符為星號(*)的語句差不多上已有注釋行(關于已有注釋行的詳細信息,參見插入已有注釋行(頁11))。如果在對話框的“其它模式”字段中輸入CASE,則系統(tǒng)在程序中插入如下行:CASEf.

WHENw1.

WHENw2.

WHENOTHERS.

ENDCASE.插入已有注釋行要在代碼中插入已有注釋行,請執(zhí)行下列操作:1. 遵照插入已有關鍵字結構中的1到2步驟。2. 在對話框的“其他模式”字段的可能條目列表中選擇帶首字符為星號(*)的結構。3. 系統(tǒng)將注釋行插入到程序中。如果在對話框的“其他模式”字段中輸入**3,則系統(tǒng)在程序中插入如下行:*********************************************************

**

**

**

*********************************************************

將數(shù)據(jù)輸出到屏幕本節(jié)講明如何在屏幕上創(chuàng)建簡單輸出列表。為此,請使用WRITE語句。下面將介紹:ABAP/4承諾在屏幕和紙張上,生成比那個地點看到的更復雜和更有效的輸出列表。這些介紹是后面章節(jié)(例如,創(chuàng)建列表)的基礎。WRITE語句在屏幕上輸出數(shù)據(jù)的差不多ABAP/4語句是WRITE。語法WRITE<f>.該語句以其標準格式,將字段<f>輸出到當前列表中。默認情形下,該列表顯示在屏幕上。字段<f>能夠是 任何數(shù)據(jù)對象(參見數(shù)據(jù)對象) 字段符號或公式參數(shù)(參見使用字符符號(頁使用字段符號)) 文本符號(參見WorkingwithTextElements)選擇“打印”,能夠直截了當從輸出屏幕打印當前輸出列表。如果為程序定義選項屏幕(參見使用選擇屏幕),就能夠在選擇屏幕上選擇“執(zhí)行和打印”,然后,該列表不輸出到屏幕上,而是直截了當發(fā)送到打印機。PROGRAMSAPMZTST.WRITE'Hello,hereIam!'.當啟動該程序時,系統(tǒng)離開當前屏幕(這可能是“ABAP/4編輯器:初始屏幕”),并如下所示轉到輸出屏幕:輸出屏幕與在程序屬性中指定的程序標題有相同的名稱(參見指定程序屬性)。屏幕上的第一行包含列表表頭。默認情形下,該列表表頭與程序標題相同。然而,能夠由實際程序外的程序標題單獨愛護列表表頭。詳細信息,參見(使用文本摘要)。當前頁號(1)顯現(xiàn)在右邊。列表表頭后緊跟著一條水平線,然后顯示輸出。能夠選擇“搜索”,以搜索特定模式。在屏幕上,輸出通常是左對齊的。如果使用幾個WRITE語句,輸出字段就一個接一個顯示,輸出之間由列分開(如一個空格)。如果當前行沒有足夠空間,則開始新行。PROGRAMSAPMTEST.TABLESSPFLIWRITE:'COMPANY:',SPFLI-CARRID.注意冒號和逗號的用法(參見語法結構)。該示例中的程序段向屏幕輸出兩個字段:文字“COMPANY:”和表格工作區(qū)SPFLI的組件CARRID:COMPANY:AA。輸出屏幕上的數(shù)據(jù)字段格式,依靠數(shù)據(jù)類型(參見預定義的差不多數(shù)據(jù)類型)。預定義數(shù)據(jù)類型的輸出格式數(shù)據(jù)類型輸出長度定位C字段長度左對齊D8左對齊F22右對齊I11右對齊N字段長度左對齊P2*字段長度(+1)右對齊T6左對齊X2*字段長度左對齊數(shù)字數(shù)據(jù)類型F、I和P是右對齊的,左邊用空格填充。如果有足夠的空間,也輸出千位分隔符。如果類型P字段包含小數(shù)位,則默認輸出長度增加一位。對數(shù)據(jù)類型D,日期的內(nèi)部格式與輸出格式不同。當輸出數(shù)據(jù)使用WRITE語句時,系統(tǒng)自動以用戶主記錄中指定的格式(例如,DD/MM/YYYY或MM/DD/YYYY),輸出數(shù)據(jù)類型D。PROGRAMSAPMTEST.DATANUMBERTYPEPVALUE'-1234567.89'DECIMALS2.WRITE:'Number',NUMBER,'ispacked'.輸出如下:Number1,234,567.89-ispacked字段NUMBER總長為13,即,9位數(shù)字(包括小數(shù)點)、前導負號和作為分隔符的兩個逗號。因為類型P字段的字段長度為8,因此NUMBER字段的輸出長度為2*8+1=17。剩余的位置用四個空格填充。這意味著,在文字‘Number’和數(shù)字自身之間有五個空格。在屏幕上定位WRITE輸出如下所示,通過制定字段名稱前面的格式規(guī)范,能夠在屏幕上定位WRITE語句的輸出:語法WRITEAT[/][<pos>][(<len>)]<f>.此處 斜線‘/’表示新的一行 <pos>是最長為三位數(shù)字的數(shù)字或變量,表示在屏幕上的位置 <len>是最長為三位數(shù)字的數(shù)字或變量,表示輸出長度如果格式規(guī)范只包含直截了當值(即,不是變量),能夠忽略關鍵字AT。WRITE'Firstline.'.WRITE'Stillfirstline.'WRITE/'Secondline.'WRITE/13'Thirdline.'這在屏幕上生成如下輸出:FirstLine.Stillfirstline.

Secondline.

Thirdline.如果指定某一個位置<pos>,則不管在該位置是否有可用的空間,或寫有其它字段,總是在該位置輸出字段。DATA:LENTYPEIVALUE10,

POSTYPEIVALUE11,

TEXT(10)VALUE'1234567890'WRITE'Thetextappearsinthetext.'.WRITEATPOS(LEN)TEXT.這在屏幕上生成如下輸出:Thetext-1234567890-appearsinthetext.如果輸出長度<len>太短,則顯示幾個字符。左邊截斷數(shù)字字段,并用星號(*)作前綴。右邊截斷所有其它字段,然而沒有給出該字段較短的指示。DATA:NUMBERTYPEIVALUE1234567890,

TEXT(10)VALUE'abcdefghij'.WRITE:(5)NUMBER,/(5)TEXT.輸出如下:*7890abcde格式化選項對WRITE語句,能夠使用不同的格式化選項。語法WRITE<f><選項>.所有數(shù)據(jù)類型的格式化選項選項用途LEFT-JUSTIFIED輸出左對齊。CENTERED輸出居中。RIGHT-JUSTIFIED輸出右對齊。UNDER<g>輸出直截了當開始于字段<g>下。NO-GAP忽略字段<f>后的空格。USINGEDITMASK<m>指定格式模板<m>。USINGNOEDITMASK撤消對ABAP/4詞典中指定的格式模板的激活。NO-ZERO如果字段僅包含零,則用空格代替它們。對類型C和N字段,將自動代替前導零。數(shù)字字段的格式化選項選項用途NO-SIGN如果<f>是類型I,P或F,不輸出前導符號。NOGROUPING如果<f>是類型I,P或F,則千位分隔符被省略。DECIMALS<d><d>定義小數(shù)點后的數(shù)字位數(shù)。EXPONENT<e>在類型F字段中,在<e>中定義冪數(shù)。ROUND<r>用10**(-r)乘類型P字段,然后取整。CURRENCY<w>按表格TCURX中的貨幣<w>格式化。UNIT<u>按表格T006中為類型P字段所指定的單位<u>固定小數(shù)位數(shù)。日期字段的格式化選項選項用途DD/MM/YY用戶主記錄中定義的分隔符MM/DD/YY用戶主記錄中定義的分隔符DD/MM/YYYY用戶主記錄中定義的分隔符MM/DD/YYYY用戶主記錄中定義的分隔符DDMMYY無分隔符。MMDDYY無分隔符。YYMMDD無分隔符。TIMEZONE<tz>參考時刻區(qū)域<tz>輸出<f>作為時刻標記。關于格式選項和這些選項內(nèi)例外原則的詳細信息,參見WRITE語句的關鍵字文檔。以下是格式選項的一些示例。要獲得更多的示例,參見章節(jié)創(chuàng)建列表。在用戶主記錄中,定義了數(shù)字字段的小數(shù)點字符和千位分隔符(分號或逗號)。ABAP/4代碼屏幕輸出DATA:G(5)VALUE'Hello',F(5)VALUE'Dolly'.WRITE:G,F.HelloDollyWRITE:/10G,Hello/FUNDERG.DollyWRITE:/GNO-GAP,F.HelloDollyDATATIMETYPETVALUE'154633'.WRITE:TIME,154633/(8)TIMEUSINGEDITMASK'__:__:__'.15:46:33WRITE:'000123',000123/'000123'NO-ZERO.123DATAFLOATTYPEFVALUE'123456789.0'.WRITEFLOATEXPONENT3.1.23E+08DATAPACKTYPEPVALUE'123.456'DECIMALS3.WRITEPACKDECIMALS2.123.46WRITE:/PACKROUND-2,12,345.60/PACKROUND-1,1,234.56/PACKROUND1,12.346/PACKROUND2.1.235WRITE:SY-DATUM,06/27/1995/SY-DATUMYYMMDD.950627在屏幕上輸出符號和圖標使用下列語法,能夠在屏幕上輸出符號和R/3圖標:語法WRITE<symbol-name>ASSYMBOL.WRITE<icon-name>ASICON.符號和圖標的名稱(<符號名>和<圖標名>)是定義系統(tǒng)的常量,這些常量在包含程序<SYMBOL>和<ICON>(尖括號是名稱的一部分)中指定。這些包含程序也包含符號和圖標的簡短講明。輸出符號和圖標最簡單的方法是使用語句結構(參見通過語句結構使用WRITE中的示例)。要使符號和圖標對程序可用,必須在程序中輸入恰當?shù)陌绦蚧蚋酌靼椎玫陌绦?lt;LIST>。關于輸入包含程序的詳細信息,參見使用包含程序。INCLUDE<SYMBOL>.INCLUDE<ICON>.WRITE:/'PhoneSymbol:',SYM_PHONEASSYMBOL.SKIP.WRITE:/'AlarmIcon:',ICON_ALARMASICON.輸出如下:上面兩個INCLUDE語句能夠用單個INCLUDE語句替代INCLUDE<LIST>.輸出屏幕上的線和空行用下列語法,能夠在輸出屏幕上生成水平線:語法ULINE[AT[/][<pos>][(<len>)]].如:ULINEAT10(20).它等同于WRITE[AT[/][<pos>][(<len>)]]SY-ULINE.AT后的格式規(guī)范,與在在屏幕上定位WRITE輸出中為WRITE語句講明的格式規(guī)范完全一樣。如果沒有格式規(guī)范,系統(tǒng)則開始新的一行,并用水平線填充該行。否則,只按指定輸出水平線。生成水平線的另一種方法,是在WRITE語句中鍵入恰當數(shù)量的連字符,如下所示:WRITE[AT[/][<pos>][(<len>)]]'...'.垂直線用下列語法,能夠在輸出屏幕上生成垂直線:語法WRITE[AT[/][<pos>]]SY-VLINE.如:WRITEAT10SY-VLINE.或WRITE[AT[/][<pos>]]'|'.空行用下列語法,能夠在輸出屏幕上生成空行:語法SKIP[<n>].該語句從當前行開始,在輸出屏幕上生成<n>個空行。如果沒有指定<n>的值,就輸出一個空行。要將輸出定位在屏幕的指定行上,請使用:語法SKIPTOLINE<n>.該語句承諾將輸出位置向上或向下移動。要獲得更多的信息和示例,參見創(chuàng)建列表。將字段內(nèi)容作為復選框輸出使用下列語法,能夠將字段的第一個字符,作為復選框輸出到輸出屏幕上:語法WRITE<f>ASCHECKBOX.如果字段<f>的第一個字符是一個“X”,就顯示復選框已填充。如果字段<f>的第一個字符是SPACE,就顯示復選框為空。該語句創(chuàng)建的復選框,默認狀態(tài)是可輸入的。確實是講,用戶能夠通過單擊鼠標來填充它們或使其為空。如何使輸出字段能輸入或撤消輸入,將在使字段同意輸入下加以講明。能輸入字段在承諾用戶對話的交互式列表中是專門重要的(參見交互列表)。DATA:FLAG1VALUE'',

FLAG2VALUE'X',

FLAG3(5)VALUE'Xenon'.WRITE:/'Flag1',FLAG1ASCHECKBOX,

/'Flag2',FLAG2ASCHECKBOX,

/'Flag3',FLAG3ASCHECKBOX.輸出列表如下:對FLAG2和FLAG3,因為這些字段的第一個字符是“X”,因此填充復選框。通過單擊鼠標,用戶能夠改變復選框的內(nèi)容。通過語句結構使用WRITE處理文本摘要ABAP/4編程環(huán)境支持在多種語言中創(chuàng)建和愛護程序。能夠將程序輸出到屏幕上的所有文本,作為文本池中的文本摘要儲備起來。對不同的語言,能夠創(chuàng)建自己的文本池。更換文本時,就不必改程序代碼,而只須更換恰當?shù)奈谋菊?。本章將介紹:圖1(略)一、文本摘要概念文本摘要包括在選擇屏幕或ABAP/4程序的輸出屏幕上顯現(xiàn)的任何講明性文本。文本摘要包含: 程序標題。標題屬于程序屬性

(參見指定程序屬性) 輸出列表頁眉的列表標題和列標題

(參見創(chuàng)建列表) 選擇屏幕上顯現(xiàn)的選擇文本

(參見使用選擇選擇屏幕) 可在WRITE語句中使用的文本符號

(參見WRITE語句)。能夠在語言有關的文本池中,將這些文本摘要儲備在程序之外。程序自動使用用戶登錄語言的文本摘要。不用更換程序代碼,就能夠創(chuàng)建和愛護文本摘要。能夠創(chuàng)建標準文本池(能夠將標準文本池從一個程序復制到另一個程序)。如果在WRITE語句中只是處理符號,而不使用串文字,程序就與語言無關。只有初始語言文本池的文本摘要,才必須翻譯成其它語言。ABAP/4工作臺完全支持文本摘要的翻譯。翻譯器能夠從初始語言的現(xiàn)有文本池,創(chuàng)建其它不同語言的文本池。二、創(chuàng)建和更換文本摘要如果期望創(chuàng)建或更換程序特有的文本摘要,請進行如下操作:1. 在“ABAP/4編輯器初始屏幕”(SE38)上,在“程序”字段中,輸入期望愛護其文本摘要的程序名稱。2. 選擇“文本摘要”并選擇“顯示”或“更換”。圖2(略)進入“ABAP/4文本摘要”屏幕。圖3(略)現(xiàn)在,選擇期望為程序愛護的文本摘要類型。如果已更換程序的源代碼,但還沒有生成程序,系統(tǒng)詢咨詢是否要生成程序。要更新文本摘要與程序的關系,則必須生成程序。如果登錄語言與程序的初始語言不一樣(例如,登錄語言是創(chuàng)建程序的語言),則下列特性適用于所有文本摘要: 在顯示模式中,能夠看到表示初始語言與登錄語言不同的警告。文本摘要以登錄語言顯示。如果某些文本摘要在初始語言中存在,但在登錄語言中不存在,則它們以初始語言顯示,并用語言標識符在右邊做上相應的標記。這承諾定位未翻譯的文本摘要(參見翻譯文本摘要(頁9)中的示例)。 在更換模式中,系統(tǒng)詢咨詢是否期望在初始語言中愛護文本摘要,或是否期望更換初始語言。更換初始語言時,就從舊初始語言中獵取新的初始語言中不存在的文本,但不做標記。下面的主題更詳細地討論不同的文本摘要:三、標題和表頭每個程序都必須有標題。在指定程序屬性(參見指定程序屬性)時,輸入程序標題。能夠隨意更換標題。能夠創(chuàng)建或更換程序輸出列表的表頭行,以及列表中不同列的列標題。更換程序的標題要更換程序的標題,從“ABAP/4文本摘要”屏幕中選擇“標題和表頭”,然后選擇“更換”。在“標題”字段中,能夠輸入最長為70個字符的標題。圖4(略)選擇“儲存”儲存更換。創(chuàng)建和更換列表及列表頭要在輸出中創(chuàng)建或更換標題,從“ABAP/4文本摘要”屏幕中選擇“標題和表頭”,然后選擇“更換”。在“列表表頭”字段中,能夠輸入最長為70個字符的列表表頭,在“列標題”字段的四行中,能夠輸入最長為255個字符的列標題。圖5(略)能夠用“編輯”菜單的選項格式化標題。如果沒有指定任何列表表頭,就在屏幕上顯示程序標題。選擇“儲存”儲存更換。圖6(略)假設有下列程序:PROGRAMSAPMZTST.DATA:NUM1TYPEI,NUM2TYPEPDECIMALS2.DO5TIMES.

NUM1=SY-INDEX**2.NUM2=SQRT(SY-INDEX).

WRITE:/SY-INDEX,NUM1,NUM2.

ENDDO.如果創(chuàng)建如上所示的表頭,則輸出屏幕如下:圖7(略)關于包含程序(參見包含程序),只能愛護程序標題。四、選擇文本能夠用文本摘要替代屏幕上顯現(xiàn)的參數(shù)及選擇標準的標準文本(參見使用選擇屏幕)。要更換選擇屏幕上的文本,從“ABAP/4文本摘要”屏幕中選擇“選擇文本”,然后選擇“更換”。在下列屏幕上,列“名稱”差不多包含程序的參數(shù)名稱及程序的選擇標準名稱(參見下面的示例)?,F(xiàn)在,對每個參數(shù)和選擇標準,能夠輸入最長為30個字符的選擇文本。如果已創(chuàng)建ABAP/4詞典字段的選擇標準,能夠選擇“有用程序->復制DD文本”。系統(tǒng)用作為屬性分配給ABAP/4詞典字段的短文本,自動填充這些選擇文本。文本摘要保持不變,但能夠修改。圖8(略)如果在將短文本作為選擇文本復制到文本池中之后,再在ABAP/4詞典中對該文本進行更換,則不將該更換自動轉移到文本池中。選擇“儲存”儲存更換。如果在愛護選擇文本之后,再更換或刪除任何參數(shù)或選擇標準,然后再調用選擇文本愛護,則能夠在程序中每個不再需要的文本右邊顯現(xiàn)帶標記的復選框。如此有助于刪除任何不使用的選擇文本。如果試圖刪除程序中使用的選擇文本,則系統(tǒng)輸出警告信息。在儲備選擇文本時,系統(tǒng)再次提示存在不使用的文本,并將其顯示出來以供刪除。假定有下列程序:PROGRAMSAPMZTST.TABLESSBOOK.PARAMETERS:TEXT(10).SELECT-OPTIONS:SEL1FORSBOOK-CARRID,

SEL2FORSBOOK-CONNID.更換選擇文本的屏幕如下:圖9(略)選擇“有用程序->復制DD文本”之后,它變?yōu)椋簣D10(略)現(xiàn)在,能夠將光標放在(例如)SEL1上,選擇“有用程序->復制DD文本”更換其選擇文本。圖11(略)也更換了參數(shù)TEXT的選擇文本。在儲存選擇文本并啟動SAPMZTST后,選擇屏幕如下:圖12(略)現(xiàn)在,用參數(shù)PARA代替程序中的參數(shù)TEXT:PROGRAMSAPMZTST.TABLESSBOOK.PARAMETERS:PARA(10).SELECT-OPTIONS:SEL1FORSBOOK-CARRID,

SEL2FORSBOOK-CONNID.然后,如果再次調用選擇文本愛護,則生成程序后,屏幕如下:顯示新參數(shù)PARA,并將舊參數(shù)TEXT標記為“未使用”。五、文本符號文本符號是在程序外輸入和愛護的文本常數(shù)。在程序的最終版本中,應該用文本符號而不是文本文字,以保持程序與語言無關并易于愛護。要創(chuàng)建或更換文本符號,在“ABAP/4文本摘要”屏幕上選擇“文本符號”,并選擇“更換”。關于每個文本符號,應該指定一個三字符長度的標識符,該標識符不包含空格,也不以字符‘%’打頭。能夠給每個文本符號分配最長為132個字符的文本。下劃線(_)代表空格。然而,不能用文本符號在屏幕上輸出下劃線。圖(略)能夠用“編輯”菜單的功能格式化文本符號。要刪除文本符號,請將光標放在文本符號上,并選擇“刪除”。選擇“儲存”儲存更換。要在程序中包含文本符號,請按如下格式使用WRITE語句:語法WRITE...TEXT-<idt>...系統(tǒng)在文本池中查找?guī)俗R符<idt>的文本符號,并將分配的文本寫到屏幕上。如果文本符號<idt>不存在,則系統(tǒng)躍過WRITE語句。為幸免躍過WRITE語句,能夠在程序中定義文本。如果文本符號不存在,系統(tǒng)就將該文本寫到屏幕上。為此,請按如下格式使用WRITE語句:語法WRITE...'<text>'(<idt>)...如果存在文本符號<idt>,系統(tǒng)就使用文本符號。否則,系統(tǒng)將串文字<text>寫到屏幕上。圖略不能對文本符號使用偏移量規(guī)范(參見為數(shù)據(jù)對象指定偏移值)。PROGRAMSAPMZTST.WRITE:TEXT-010,

/TEXT-AAA,

/TEXT-020,

/'DefaultText030'(030),

/'DefaultText040'(040).如果將上述文本符號與該程序鏈接,則輸出如下:文本符號020和040不存在。在020的情形下,系統(tǒng)躍過WRITE語句。在040的情形下,則將程序中定義的文本輸出到屏幕上。六、復制文本摘要能夠將文本摘要從一個ABAP/4程序復制到另一個ABAP/4程序。復制功能承諾傳輸具有自己的標準文本摘要的文本池,這些標準元素是在不同程序中使用的。為此,請在“ABAP/4文本摘要”屏幕上選擇“復制”。在“源程序”字段中,輸入期望從其中復制文本的程序名稱,在“目標程序”字段中,輸入期望將文本復制到其中的目標程序名稱。(圖略)要復制源程序的所有文本,選擇“復制”。如果只期望從源程序中復制某些文本,則選擇“選擇部分”?,F(xiàn)在,能夠指定期望復制的對象。(圖略)選擇有關的復選框并選擇“復制”。七、比較文本符號如果在程序代碼中插入新的文本符號,或更換現(xiàn)有文本符號,則不自動將這些文本符號復制到文本池中。要更新該列表并排除任何差異,能夠使用“ABAP/4文本摘要”屏幕上的“比較文本符號”功能。為程序調用該功能后,系統(tǒng)在屏幕上顯示程序代碼中的所有文本符號,其文本在程序中和文本池中定義。在右邊,能夠看到在程序和文本池中這些文本是否一樣(“P=T”)。如果文本不一樣,則用T標記文本池中的文本,并用P標記程序中定義的文本。在列+/-中,能夠指定 “-”,從文本池中刪除文本符號 “+”,將文本符號添加到文本池中 “”,文本符號保持不變?nèi)绻x擇“調整”,則系統(tǒng)按照這些設置,刷新文本池中的文本符號。這不改變程序代碼。圖略編寫如下程序:PROGRAMTEXTTEST.WRITE:TEXT-010,

'Placeholder'(020),

TEXT-030.不創(chuàng)建任何文本符號。文本符號列表為空。在“ABAP/4文本摘要”屏幕上選擇“比較文本符號”后,如果沒有生成程序,就顯現(xiàn)對話框。圖略在這種情形下,單擊“生成”。就能夠看到文本池中的文本符號和程序代碼的比較。圖略在程序中指定的文本符號010、020和030,在文本池中沒有定義。要將所有這些文本符號復制到文本池,使列+/-中的符號保持為“+”,并選擇“調整”。在做完這些后,在顯示模式中,文本符號列表如下:圖略系統(tǒng)已在文本池中創(chuàng)建了文本符號010、020和030。它沒有為010和030分配任何文本,并將在程序中定義的文本分配給020?,F(xiàn)在,能夠更換文本符號,如文本符號(頁31)中所述。將程序代碼更換為PROGRAMTEXTTEST.WRITE:TEXT-010,

'Placeholder'(020),

'TextSymbol'(030).生成程序,并再次在“ABAP/4文本摘要”屏幕上選擇“比較文本符號”?,F(xiàn)在,比較顯示如下:圖略第一,看到兩個正確定義的文本符號010和020,然后看到文本池和程序中文本符號030文本有區(qū)不的消息?!?”和“-”符號承諾定義期望保留哪個文本。翻譯文本摘要要將文本摘要翻譯為其它語言,從“ABAP/4開發(fā)工作臺”屏幕開始,選擇“有用程序翻譯短/長文本”。在后續(xù)的“翻譯短/長文本”屏幕上,選擇“翻譯短文本程序”,然后選擇要翻譯的文本摘要。顯現(xiàn)下列屏幕:輸入文本摘要所屬的程序名稱、初始語言和目標語言,并選擇“翻譯”。文本摘要以其輸入語言顯示。能夠輸入注釋,并使用文本摘要下面的行輸入翻譯(參見下面的示例)。翻譯完當前類型的所有文本摘要后,請使用“定位”菜單中的功能翻譯其它類型的文本摘要。翻譯完所有文本摘要后,選擇“儲存”儲存翻譯。采納這種方式能夠創(chuàng)建不同語言的完整文本池。如果存在不同語言的文本池,能夠使用以下選項阻礙程序的輸出語言登錄語言:在缺省情形下,系統(tǒng)自動使用用戶的登錄語言。SETLANGUAGE語句:借助該ABAP/4語句,能夠在程序中顯式地指定輸出語言,而不考慮登錄語言。語法SETLANGUAGE<lg>.語言<lg>能夠是文字或變量。選擇某種語言(通過登錄語言或顯式規(guī)定)時,系統(tǒng)在該語言的文本池中查找包含在程序中的文本摘要。如果在該文本池中找不到文本摘要,則系統(tǒng)將程序代碼中的文本輸出到屏幕上,或躍過有關的WRITE語句(參見文本符號(頁31))。系統(tǒng)不使用其它語言的文本摘要。圖略假定程序如下所示,初始語言為英語。PROGRAMTRANTEST.WRITETEXT-010.并有如下輸出:圖略如果用德語登錄到系統(tǒng)上,同時不存在英語文本符號,在顯示程序的文本符號時,就看到下列行:圖略右邊的字符“E”表示存在英語文本符號010。在ABAP/4開發(fā)工作臺中,將文本摘要從英語翻譯為德語,如下所示:標題和表頭:圖略文本符號:圖略如果登錄R/3系統(tǒng)并指定語言“D”,程序TRANTEST的輸出如下:圖略通過按如下格式更換程序代碼,能夠將程序TRANTEST的輸出語言修改為德語。PROGRAMTRANTEST.SETLANGUAGE'D'.WRITETEXT-010.現(xiàn)在,不管采納何種語言登錄,輸出始終為德語。處理數(shù)據(jù)賦值用MOVE賦值用指定偏移量賦值能夠在每條ABAP/4語句中為差不多數(shù)據(jù)類型指定偏移量和長度(參見指定數(shù)據(jù)對象的偏移量(頁345))。在這種情形下,MOVE語句語法如下:語法MOVE<F1>[+<o1>][(<l1>)]TO<F2>[+<o2>][(<l2>)].賦值運算符語法如下:語法<F2>[+<o2>][(<l2>)]=<F1>[+<o1>][(<l1>)]。將字段<F1>從<o1>+1位置開始且長度為<l1>的段內(nèi)容賦給字段<F2>,覆蓋從<o2>+1位置開始且長度為<l2>的段。在MOVE語句中,所有偏移量和長度指定都可為變量。這同樣適用于采納賦值運算符的語句,只要也能夠寫做MOVE語句。在賦值運算符之后未指定字段名稱的語句中,(例如在數(shù)學表達式中),所有偏移量和長度指定都必須是無符號數(shù)值。詳細信息,參見數(shù)值運算(頁386))。SAP建議只在非數(shù)值字段之間才采納指定偏移量和長度賦值。關于數(shù)值字段,結果毫無意義。DATA:F1(8)VALUE'ABCDEFGH',

F2(20).F2+6(5)=F1+3(5).在該示例中,賦值運算符功能如下:DATA:F1(8)VALUE'ABCDEFGH',

F2(8).DATA:OTYPEIVALUE2,

LTYPEIVALUE4.MOVEF1TOF2.WRITEF2.

MOVEF1+O(L)TOF2.WRITE/F2.

MOVEF1TOF2+O(L).WRITE/F2.CLEARF2.

MOVEF1TOF2+O(L).WRITE/F2.

MOVEF1+O(L)TOF2+O(L).WRITE/F2.該過程輸出如下:ABCDEFGHCDEFCDABCDABCDCDEF第一,未指定偏移量將F1內(nèi)容賦給F2。然后,再指定偏移量和長度執(zhí)行同樣操作。后面三條MOVE語句覆蓋偏移量為2.的F2內(nèi)容。請注意,按照源類型字符(頁439)中的規(guī)則,F(xiàn)2的右邊用空格填充。在字段串組件之間復制值用WRITETO賦值用WRITETO給數(shù)據(jù)對象賦值時,能夠用WRITE語句的格式化選項(參見WRITE語句本節(jié)主題描述WRITETO語句的差不多形式要將值(文字)或源字段內(nèi)容寫入目標字段,能夠使用WRITETO語句:語法WRITE<F1>TO<F2>[<option>].WRITETO語句將源字段<F1>內(nèi)容寫入目標字段<F2>。<F1>能夠是任何數(shù)據(jù)對象。<F2>必須是變量,不能是文字或常量。寫入后,<F1>內(nèi)容保持不變。關于<option>,能夠使用WRITE語句的所有格式化選項(UNDER和NO-GAP除外)(參見格式選項)。WRITETO語句總是檢查用戶主記錄中的設置。例如,這些設置指定是將小數(shù)點顯示為句號(.),依舊逗號(,)。WRITETO語句并不遵循類型轉換(頁14)中所述的轉換規(guī)則。目標字段講明為類型C字段。系統(tǒng)總是將源字段內(nèi)容轉換為類型C,它不將結果字符串轉換為目標字段的數(shù)據(jù)類型,而直截了當寫入目標字段。因此,不應使用數(shù)值數(shù)據(jù)類型的目標字段。DATA:NUMBERTYPEFVALUE'4.3',

TEXT(10),

FLOATTYPEF,

PACKTYPEPDECIMALS1.WRITENUMBER.WRITENUMBERTOTEXTEXPONENT2.

WRITE/TEXT.WRITENUMBERTOFLOAT.

WRITE/FLOAT.WRITENUMBERTOPACK.

WRITE/PACK.MOVENUMBERTOPACK.

WRITE/PACK.該過程輸出如下:4.30000000000000E+000.043E+021.50454551753894E-15320342<33452;30,34.3第一輸出行以類型F字段的標準輸出格式顯示字段NUMBER內(nèi)容。第二輸出行顯示字符串,該字符串產(chǎn)生于用格式化選項EXPONENT2將字段NUMBER寫入長度為10的類型C字段中。第三和第四輸出行顯示不適合于使用數(shù)值數(shù)據(jù)類型的目標字段。第五輸出行顯示MOVE語句不同于WRITETO語句在于將類型F字段正確地轉換為類型P(有關該轉換的詳細信息,參見源類型浮點數(shù)(頁438))。運行時指定源字段能夠使用WRITETO語句在運行時指定源字段。為此,請用括號將包含源字段名的數(shù)據(jù)對象名括起來,并將其放在源字段位置:語法WRITE(<f>)TO<g>.系統(tǒng)將賦給<f>的數(shù)據(jù)對象值放到<g>中。然而,如果要在運行時指定目標字段,則必須按使用字段符號中所述,使用字段符號。DATA:NAME(10)VALUE'SOURCE',

SOURCE(10)VALUE'Antony',

TARGET(10)

WRITE(NAME)TOTARGET.

WRITE:TARGET.則輸出Antony字段名和字段內(nèi)容之間的連接如下圖所示。用指定偏移量寫入值將值重置為默認值能夠用CLEAR語句重置任何數(shù)據(jù)對象值,如下所示:語法CLEAR<f>.該語句將數(shù)據(jù)對象<f>的內(nèi)容重置為初始默認值。能夠區(qū)分 差不多數(shù)據(jù)類型關于差不多數(shù)據(jù)類型的數(shù)據(jù)對象的默認值列表,參見預定義的差不多數(shù)據(jù)類型中的表。系統(tǒng)將變量值重置為它們的初始默認值,而不是用DATA語句的VALUE參數(shù)所賦的初始值。無法重置常量。 字段串如果將CLEAR語句應用于字段串,則將單個組件的內(nèi)容重置為它們的初始默認值。 內(nèi)表關于CLEAR語句如何使用內(nèi)表的講明,參見初始化內(nèi)表。DATANUMBERTYPEIVALUE'10'.WRITENUMBER.CLEARNUMBER.WRITE/NUMBER.輸出為:100CLEAR語句將字段NUMBER的內(nèi)容從10重置為默認值0。數(shù)值運算執(zhí)行算術運算1、差不多算數(shù)運算2、執(zhí)行字段串的算術運算類似于用MOVE-CORRESPONDING語句在字段串之間復制值(參見在字段串組件之間復制值(頁37)),能夠用以下關鍵字,執(zhí)行字段串的算術運算: ADD-CORRESPONDING SUBTRACT-CORRESPONDING MULTIPLY-CORRESPONDING DIVIDE-CORRESPONDING關于所有同名字段串組件,ABAP/4進行相應算術運算。然而,僅當所有有關組件差不多上數(shù)值型數(shù)據(jù)類型時,該運算才有意義。有關這些關鍵字的詳細信息,參見ABAP/4關鍵字文檔。DATA:BEGINOFRATE,

USATYPEFVALUE'0.6667',

FRGTYPEFVALUE'1.0',

AUTTYPEFVALUE'7.0',

ENDOFRATE.DATA:BEGINOFMONEY,

USATYPEIVALUE100,

FRGTYPEIVALUE200,

AUTTYPEIVALUE300,

ENDOFMONEY.MULTIPLY-CORRESPONDINGMONEYBYRATE.WRITE/MONEY-USA.

WRITE/MONEY-FRG.

WRITE/MONEY-AUT.輸出如下:672002,100在此,用RATE-USA乘以MONEY-USA,以此類推。3、添加字段順序除差不多算術運算(頁41)中所述的差不多加法之外,ADD語句有幾個變體,用于添加字段順序。例如: 添加字段順序并將結果賦給另一個字段語法ADD<n1>THEN<n2>UNTIL<nz>GIVING<m>.如果<n1>、<n2>、...、<nz>是在內(nèi)存中相同類型和長度的等距字段序列,則進行求和運算并將結果賦給<m> 添加字段順序并將結果添加到另一個字段的內(nèi)容中語法ADD<n1>THEN<n2>UNTIL<nz>TO<m>.該語句除了將字段總和添加到<m>的舊內(nèi)容中之外,與上面語句的工作方式相同。有關其它相似變體的信息,參見有關ADD語句的關鍵字文檔。DATA:BEGINOFSERIES,

N1TYPEIVALUE10,

N2TYPEIVALUE20,

N3TYPEIVALUE30,

N4TYPEIVALUE40,

N5TYPEIVALUE50,

N6TYPEIVALUE60,

ENDOFSERIES.DATASUMTYPEI.ADDSERIES-N1THENSERIES-N2UNTILSERIES-N5GIVINGSUM.

WRITESUM.ADDSERIES-N2THENSERIES-N3UNTILSERIES-N6TOSUM.

WRITE/SUM.輸出如下:150350在此,將N1到N5組件內(nèi)容求和并將其值賦給字段SUM。然后,將N2到N6組件求和并將其添加到SUM的值中。(二)使用數(shù)學函數(shù)(三)浮點函數(shù)以下內(nèi)部函數(shù)用浮點數(shù)據(jù)類型(F)作為參數(shù)。浮點數(shù)據(jù)類型的函數(shù)函數(shù)講明ACOS、ASIN、ATAN;三角函數(shù)。COS、SIN、TANCOSH、SINH、TANH反三角函數(shù)。EXP基數(shù)為e的求冪函數(shù)(e=2.7182818285)。LOG基數(shù)為e的自然對數(shù)。LOG10基數(shù)為10的對數(shù)。SQRT平方根。關于所有函數(shù),正常數(shù)學約束(例如平方根只適用于正數(shù))適用。否則,會產(chǎn)生運行錯誤。這些函數(shù)的參數(shù)不必為浮點數(shù)。如果選擇其它類型,則被轉化為類型F,如類型轉換(頁14)中所述。DATA:RESULTTYPEF,

PI(10)VALUE'3.141592654'.RESULT=COS(PI).WRITERESULT.輸出為-1.00000000000000E+00。在進行運算之前,自動將字符字段PI轉換為類型F字段。(四)處理壓縮數(shù)(五)處理日期和時刻字段日期和時刻字段數(shù)據(jù)類型不是數(shù)值型。然而,由于進行自動類型轉換,能夠采納類似于數(shù)值型字段的處理方法,處理日期和時刻字段(參見差不多數(shù)據(jù)類型的可轉換性(頁435))在處理日期和時刻字段時,使用偏移量指定常常十分有用(參見指定數(shù)據(jù)對象的偏移量(頁345))。DATA:ULTIMOTYPED.ULTIMO=SY-DATUM.

ULTIMO+6(2)='01'."=firstdayofthismonth

ULTIMO=ULTIMO-1."=lastdayoflastmonth在此,將上月的最后一天賦給日期字段ULTIMO。為此:1. 用當前日期填充ULTIMO。2. 用指定偏移量,將日期更換為當前月的第一天。3. 從ULTIMO減1,將其內(nèi)容更換為上月的最后一天。在進行減法之前,系統(tǒng)將ULTIMO轉換為從01.01.0001起的天數(shù)并將結果轉換為日期。DATA:DIFFTYPEI,

SECONDSTYPEI,

HOURSTYPEI.DATA:T1TYPETVALUE'200000',

T2TYPETVALUE'020000'.DIFF=T2-T1.

SECONDS=DIFFMOD86400.

HOURS=SECONDS/3600.最后三行可由以下行替換HOURS=((T2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論