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

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

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

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

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

SAPMTEST.

WRITE

'Thisis

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

WRITESPFLI-CITYTO.

WRITESPFLI-AIRPTO.鏈語(yǔ)句:WRITE:SPFLI-CITYFROM,SPFLI-CITYTO,SPFLI-AIRPTO.在鏈中,冒號(hào)將語(yǔ)句的開始部分與可變部分分開。能夠在冒號(hào)(或逗號(hào))之前或之后插入任意個(gè)空格。例如,能夠?qū)懭缦孪嗤Z(yǔ)句:WRITE:SPFLI-CITYFROM,

SPFLI-CITYTO,

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

WHENw1.

WHENw2.

WHENOTHERS.

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

**

**

**

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

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

Secondline.

Thirdline.如果指定某一個(gè)位置<pos>,則不管在該位置是否有可用的空間,或?qū)懹衅渌侄危偸窃谠撐恢幂敵鲎侄?。DATA:LENTYPEIVALUE10,

POSTYPEIVALUE11,

TEXT(10)VALUE'1234567890'WRITE'Thetextappearsinthetext.'.WRITEATPOS(LEN)TEXT.這在屏幕上生成如下輸出:Thetext-1234567890-appearsinthetext.如果輸出長(zhǎng)度<len>太短,則顯示幾個(gè)字符。左邊截?cái)鄶?shù)字字段,并用星號(hào)(*)作前綴。右邊截?cái)嗨衅渌侄?,然而沒有給出該字段較短的指示。DATA:NUMBERTYPEIVALUE1234567890,

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

FLAG2VALUE'X',

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

/'Flag2',FLAG2ASCHECKBOX,

/'Flag3',FLAG3ASCHECKBOX.輸出列表如下:對(duì)FLAG2和FLAG3,因?yàn)檫@些字段的第一個(gè)字符是“X”,因此填充復(fù)選框。通過(guò)單擊鼠標(biāo),用戶能夠改變復(fù)選框的內(nèi)容。通過(guò)語(yǔ)句結(jié)構(gòu)使用WRITE處理文本摘要ABAP/4編程環(huán)境支持在多種語(yǔ)言中創(chuàng)建和愛護(hù)程序。能夠?qū)⒊绦蜉敵龅狡聊簧系乃形谋荆鳛槲谋境刂械奈谋菊獌?chǔ)備起來(lái)。對(duì)不同的語(yǔ)言,能夠創(chuàng)建自己的文本池。更換文本時(shí),就不必改程序代碼,而只須更換恰當(dāng)?shù)奈谋菊?。本章將介紹:圖1(略)一、文本摘要概念文本摘要包括在選擇屏幕或ABAP/4程序的輸出屏幕上顯現(xiàn)的任何講明性文本。文本摘要包含: 程序標(biāo)題。標(biāo)題屬于程序?qū)傩?/p>

(參見指定程序?qū)傩裕?輸出列表頁(yè)眉的列表標(biāo)題和列標(biāo)題

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

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

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

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

WRITE:/SY-INDEX,NUM1,NUM2.

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

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

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

/TEXT-AAA,

/TEXT-020,

/'DefaultText030'(030),

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

'Placeholder'(020),

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

'Placeholder'(020),

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

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

TEXT(10),

FLOATTYPEF,

PACKTYPEPDECIMALS1.WRITENUMBER.WRITENUMBERTOTEXTEXPONENT2.

WRITE/TEXT.WRITENUMBERTOFLOAT.

WRITE/FLOAT.WRITENUMBERTOPACK.

WRITE/PACK.MOVENUMBERTOPACK.

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

SOURCE(10)VALUE'Antony',

TARGET(10)

WRITE(NAME)TOTARGET.

WRITE:TARGET.則輸出Antony字段名和字段內(nèi)容之間的連接如下圖所示。用指定偏移量寫入值將值重置為默認(rèn)值能夠用CLEAR語(yǔ)句重置任何數(shù)據(jù)對(duì)象值,如下所示:語(yǔ)法CLEAR<f>.該語(yǔ)句將數(shù)據(jù)對(duì)象<f>的內(nèi)容重置為初始默認(rèn)值。能夠區(qū)分 差不多數(shù)據(jù)類型關(guān)于差不多數(shù)據(jù)類型的數(shù)據(jù)對(duì)象的默認(rèn)值列表,參見預(yù)定義的差不多數(shù)據(jù)類型中的表。系統(tǒng)將變量值重置為它們的初始默認(rèn)值,而不是用DATA語(yǔ)句的VALUE參數(shù)所賦的初始值。無(wú)法重置常量。 字段串如果將CLEAR語(yǔ)句應(yīng)用于字段串,則將單個(gè)組件的內(nèi)容重置為它們的初始默認(rèn)值。 內(nèi)表關(guān)于CLEAR語(yǔ)句如何使用內(nèi)表的講明,參見初始化內(nèi)表。DATANUMBERTYPEIVALUE'10'.WRITENUMBER.CLEARNUMBER.WRITE/NUMBER.輸出為:100CLEAR語(yǔ)句將字段NUMBER的內(nèi)容從10重置為默認(rèn)值0。數(shù)值運(yùn)算執(zhí)行算術(shù)運(yùn)算1、差不多算數(shù)運(yùn)算2、執(zhí)行字段串的算術(shù)運(yùn)算類似于用MOVE-CORRESPONDING語(yǔ)句在字段串之間復(fù)制值(參見在字段串組件之間復(fù)制值(頁(yè)37)),能夠用以下關(guān)鍵字,執(zhí)行字段串的算術(shù)運(yùn)算: ADD-CORRESPONDING SUBTRACT-CORRESPONDING MULTIPLY-CORRESPONDING DIVIDE-CORRESPONDING關(guān)于所有同名字段串組件,ABAP/4進(jìn)行相應(yīng)算術(shù)運(yùn)算。然而,僅當(dāng)所有有關(guān)組件差不多上數(shù)值型數(shù)據(jù)類型時(shí),該運(yùn)算才有意義。有關(guān)這些關(guān)鍵字的詳細(xì)信息,參見ABAP/4關(guān)鍵字文檔。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、添加字段順序除差不多算術(shù)運(yùn)算(頁(yè)41)中所述的差不多加法之外,ADD語(yǔ)句有幾個(gè)變體,用于添加字段順序。例如: 添加字段順序并將結(jié)果賦給另一個(gè)字段語(yǔ)法ADD<n1>THEN<n2>UNTIL<nz>GIVING<m>.如果<n1>、<n2>、...、<nz>是在內(nèi)存中相同類型和長(zhǎng)度的等距字段序列,則進(jìn)行求和運(yùn)算并將結(jié)果賦給<m> 添加字段順序并將結(jié)果添加到另一個(gè)字段的內(nèi)容中語(yǔ)法ADD<n1>THEN<n2>UNTIL<nz>TO<m>.該語(yǔ)句除了將字段總和添加到<m>的舊內(nèi)容中之外,與上面語(yǔ)句的工作方式相同。有關(guān)其它相似變體的信息,參見有關(guān)ADD語(yǔ)句的關(guān)鍵字文檔。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ù)學(xué)函數(shù)(三)浮點(diǎn)函數(shù)以下內(nèi)部函數(shù)用浮點(diǎn)數(shù)據(jù)類型(F)作為參數(shù)。浮點(diǎn)數(shù)據(jù)類型的函數(shù)函數(shù)講明ACOS、ASIN、ATAN;三角函數(shù)。COS、SIN、TANCOSH、SINH、TANH反三角函數(shù)。EXP基數(shù)為e的求冪函數(shù)(e=2.7182818285)。LOG基數(shù)為e的自然對(duì)數(shù)。LOG10基數(shù)為10的對(duì)數(shù)。SQRT平方根。關(guān)于所有函數(shù),正常數(shù)學(xué)約束(例如平方根只適用于正數(shù))適用。否則,會(huì)產(chǎn)生運(yùn)行錯(cuò)誤。這些函數(shù)的參數(shù)不必為浮點(diǎn)數(shù)。如果選擇其它類型,則被轉(zhuǎn)化為類型F,如類型轉(zhuǎn)換(頁(yè)14)中所述。DATA:RESULTTYPEF,

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

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

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

SECONDSTYPEI,

HOURSTYPEI.DATA:T1TYPETVALUE'200000',

T2TYPETVALUE'020000'.DIFF=T2-T1.

SECONDS=DIFFMOD86400.

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

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論