




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
/setZ_001pagepage11聲明數(shù)據(jù)概覽xe"ABAP/4類型概念"xe"數(shù)據(jù)"xe"數(shù)據(jù),聲明"內(nèi)容TOC\o"2-3"數(shù)據(jù)類型和對(duì)象簡(jiǎn)介 GOTOBUTTON_Toc3954136472數(shù)據(jù)類型 GOTOBUTTON_Toc3954136483根本數(shù)據(jù)類型-預(yù)定義的 GOTOBUTTON_Toc3954136493根本數(shù)據(jù)類型-用戶定義的 GOTOBUTTON_Toc3954136505結(jié)構(gòu)化數(shù)據(jù)類型 GOTOBUTTON_Toc3954136515數(shù)據(jù)類型的兼容性 GOTOBUTTON_Toc3954136527數(shù)據(jù)對(duì)象 GOTOBUTTON_Toc3954136537文字 GOTOBUTTON_Toc3954136548變量 GOTOBUTTON_Toc3954136559常量 GOTOBUTTON_Toc39541365610系統(tǒng)定義的數(shù)據(jù)對(duì)象 GOTOBUTTON_Toc39541365710創(chuàng)立數(shù)據(jù)對(duì)象和數(shù)據(jù)類型 GOTOBUTTON_Toc39541365811DATA語句 GOTOBUTTON_Toc39541365911CONSTANTS語句 GOTOBUTTON_Toc39541366016STATICS語句 GOTOBUTTON_Toc39541366117TABLES語句 GOTOBUTTON_Toc39541366217TYPES語句 GOTOBUTTON_Toc39541366318例如匯總 GOTOBUTTON_Toc39541366420預(yù)定義根本數(shù)據(jù)類型和對(duì)象例如 GOTOBUTTON_Toc39541366520用戶定義的根本數(shù)據(jù)類型和對(duì)象示例 GOTOBUTTON_Toc39541366620字段串例如 GOTOBUTTON_Toc39541366721內(nèi)表例如 GOTOBUTTON_Toc39541366822使用類型組 GOTOBUTTON_Toc39541366923確定數(shù)據(jù)對(duì)象的屬性 GOTOBUTTON_Toc39541367024確定字段長(zhǎng)度 GOTOBUTTON_Toc39541367125確定數(shù)據(jù)類型 GOTOBUTTON_Toc39541367225確定輸出長(zhǎng)度 GOTOBUTTON_Toc39541367326確定小數(shù)位 GOTOBUTTON_Toc39541367427確定轉(zhuǎn)換例程 GOTOBUTTON_Toc39541367527本節(jié)說明如何在ABAP/4程序中聲明數(shù)據(jù)。要能聲明數(shù)據(jù),應(yīng)該熟悉定義數(shù)據(jù)類型數(shù)據(jù)對(duì)象之間關(guān)系的ABAP/4類型概念。以下內(nèi)容介紹ABAP/4類型概念以下主題說明在該指南中,術(shù)語“字段〞用于數(shù)據(jù)對(duì)象。通常情況下,字段可以是 任何數(shù)據(jù)對(duì)象(參見數(shù)據(jù)對(duì)象(頁REFz_036page7)) 字段符號(hào)或形式參數(shù)(參見LINKWord.Document.6"\\\\BOYS\\PUBLIC\\DOKU\\30D\\BC\\ENGLISH\\BCAB4\\BC12E.DOC""z_000"\a\t使用字段符號(hào)和LINKWord.Document.6"\\\\BOYS\\PUBLIC\\DOKU\\30D\\BC\\ENGLISH\\BCAB4\\BC11E.DOC""z_018"\a\t通過參數(shù)傳遞數(shù)據(jù))根據(jù)上下文,可以明確術(shù)語“字段〞代表什么。setZ_058pagepage22數(shù)據(jù)類型和對(duì)象簡(jiǎn)介數(shù)據(jù)類型和數(shù)據(jù)對(duì)象是ABAP/4類型概念的根本組件。二者均可由用戶聲明和維護(hù)。這與其它編程語言如C、FORTRAN或PASCAL不同,在這些語言中用戶可以聲明數(shù)據(jù)對(duì)象,但僅限于預(yù)定義的數(shù)據(jù)類型。在ABAP/4中,可以使用與標(biāo)準(zhǔn)數(shù)據(jù)聲明相似的語法處理數(shù)據(jù)類型,而與數(shù)據(jù)對(duì)象無關(guān)。特殊程序以外的數(shù)據(jù)類型集中存儲(chǔ)也是可能的。以下列表是數(shù)據(jù)類型和對(duì)象主要特征的概述: 數(shù)據(jù)類型(根本的或結(jié)構(gòu)化的)- 數(shù)據(jù)類型是純粹的說明。- 沒有與數(shù)據(jù)類型相關(guān)聯(lián)的內(nèi)存。- 數(shù)據(jù)類型描述數(shù)據(jù)對(duì)象的技術(shù)屬性。- 數(shù)據(jù)類型是數(shù)據(jù)對(duì)象的屬性并與數(shù)據(jù)對(duì)象聯(lián)系緊密。 數(shù)據(jù)對(duì)象(文字、變量、常量等):- 數(shù)據(jù)對(duì)象是程序在運(yùn)行時(shí)使用的物理單元。- 每個(gè)數(shù)據(jù)對(duì)象都有分配給它的特定數(shù)據(jù)類型。- 每個(gè)數(shù)據(jù)對(duì)象占據(jù)一些內(nèi)存空間。- ABAP/4根據(jù)數(shù)據(jù)對(duì)象的數(shù)據(jù)類型處理數(shù)據(jù)對(duì)象。在程序中,必須聲明要使用的全部數(shù)據(jù)對(duì)象。聲明過程中,必須給數(shù)據(jù)對(duì)象分配屬性。其中最重要的屬性是數(shù)據(jù)類型。在ABAP/4中,可以使用與其它程序語言相似的預(yù)定義的數(shù)據(jù)類型,或者使用用戶定義的數(shù)據(jù)類型。由于ABAP/4中用戶定義的數(shù)據(jù)類型允許編程具有非常大的靈活性,所以提供了強(qiáng)有力的工具。它們的范圍從根本類型(例如,給定長(zhǎng)度的字符串)到非常復(fù)雜的結(jié)構(gòu)(例如,嵌套表)。將用戶定義的數(shù)據(jù)類型分配給數(shù)據(jù)對(duì)象使您能精確處理需要的數(shù)據(jù)對(duì)象。可以按使用預(yù)定義數(shù)據(jù)類型的方式使用用戶定義的數(shù)據(jù)類型。可以在程序內(nèi)對(duì)它們進(jìn)行局部明,或在ABAP/4詞典中對(duì)它們進(jìn)行全局保存。有三個(gè)層次級(jí)的數(shù)據(jù)類型和對(duì)象: 在ABAP/4詞典中定義的獨(dú)立于程序的數(shù)據(jù) 在一個(gè)程序中全局使用的內(nèi)部數(shù)據(jù) 在過程(子程序和功能模塊)中局部使用的數(shù)據(jù)在本指南的相應(yīng)章節(jié)將了解到有關(guān)這些層次級(jí)的詳細(xì)內(nèi)容。setZ_024pagepage33數(shù)據(jù)類型在ABAP/4中按結(jié)構(gòu)和定義對(duì)數(shù)據(jù)類型分類。數(shù)據(jù)類型是: 根本的(非結(jié)構(gòu)化的)或結(jié)構(gòu)化的 預(yù)定義的或用戶定義的因此,有四類數(shù)據(jù)類型,在下表中列出。預(yù)定義數(shù)據(jù)類型的名稱是固定的。用戶定義的數(shù)據(jù)類型的名稱由程序員在程序中定義。ABAP/4中的數(shù)據(jù)類型預(yù)定義的用戶定義的基本的C、D、F、I、N、P、T和X:
ABAP/4包含8個(gè)預(yù)定義基本數(shù)據(jù)類型。根本數(shù)據(jù)類型-預(yù)定義的(頁REFz_027page3)用戶定義的根本數(shù)據(jù)類型基于預(yù)定義根本數(shù)據(jù)類型。根本數(shù)據(jù)類型-用戶定義的(頁REFz_028page5)結(jié)構(gòu)化的TABLE:
該預(yù)定義的結(jié)構(gòu)化的數(shù)據(jù)類型僅用于形式參數(shù)和字段符號(hào)的鍵入。字段串和內(nèi)表:
這些結(jié)構(gòu)化的數(shù)據(jù)類型可以用于數(shù)據(jù)對(duì)象并且是用戶定義的。結(jié)構(gòu)化數(shù)據(jù)類型(頁REFz_049page5)使用數(shù)據(jù)時(shí),了解數(shù)據(jù)類型是否兼容是很重要的。關(guān)于該主題的詳細(xì)信息,參見setZ_027pagepage33根本數(shù)據(jù)類型-預(yù)定義的下表總結(jié)了ABAP/4中預(yù)定義的根本數(shù)據(jù)類型(有效大小以字節(jié)為單位):ABAP/4數(shù)據(jù)類型數(shù)據(jù)類型默認(rèn)大小有效大小初始值說明C11-65535SPACE文本、字符
(字母數(shù)字字符)D88'00000000'日期
(格式:YYYYMMDD)F880浮點(diǎn)數(shù)I440整型(整數(shù))N11-65535'00...0'數(shù)字文本P81-160壓縮號(hào)T66'000000'時(shí)間
(格式:HHMMSS)X11-65535X'00'十六進(jìn)制在各方面,數(shù)據(jù)類型D、F、I和T都是預(yù)定義的,但數(shù)據(jù)類型C、N、P和X可以有附加說明。例如,可以在程序中定義大小。關(guān)于數(shù)字?jǐn)?shù)據(jù)類型I、F和P的詳細(xì)信息,參見數(shù)字?jǐn)?shù)據(jù)類型(頁REFz_043page4)。setZ_043pagepage44數(shù)字?jǐn)?shù)據(jù)類型ABAP/4支持三種數(shù)字?jǐn)?shù)據(jù)類型。它們是: 類型I的整型(整數(shù)) 類型P的壓縮號(hào) 類型F的浮點(diǎn)數(shù)類型I數(shù)據(jù)類型I數(shù)據(jù)的數(shù)值范圍是-2**31到2**31-1并且僅包括整數(shù)。對(duì)算術(shù)運(yùn)算的非整型結(jié)果(如分?jǐn)?shù))進(jìn)行四舍五入,而不是截?cái)唷n愋虸數(shù)據(jù)可用于計(jì)數(shù)器、項(xiàng)目號(hào)、索引和時(shí)間期段等。類型P數(shù)據(jù)類型P數(shù)據(jù)允許在小數(shù)點(diǎn)后有數(shù)字。類型P數(shù)據(jù)的數(shù)值范圍取決于大小和小數(shù)點(diǎn)后的位數(shù)。有效大小可以是從1到16字節(jié)的任何值。將兩個(gè)十進(jìn)制數(shù)字壓縮到一個(gè)字節(jié),而最后一個(gè)字節(jié)包含一個(gè)數(shù)字和符號(hào)。在小數(shù)點(diǎn)后最多允許14個(gè)數(shù)字。關(guān)于定義小數(shù)點(diǎn)后位數(shù)的詳細(xì)信息,參見DATA語句的根本格式(頁REFz_041page12)。使用類型P數(shù)據(jù)時(shí),最好將程序?qū)傩栽O(shè)置為“定點(diǎn)算法〞(參見指定程序?qū)傩?頁LINKWord.Document.6C:\\LIN\\BCAB4\\BC03E.DOPz_005page\a\tError!Notavalidlink.))。否則,將類型P數(shù)字作為整型對(duì)待。類型P數(shù)據(jù)可用于如距離、重量和錢數(shù)等數(shù)值。類型F數(shù)據(jù)對(duì)于正數(shù)和負(fù)數(shù),類型F數(shù)的數(shù)值范圍是1x10**-307到1x10**308,包括0(零)。精確范圍近似為15位十進(jìn)制數(shù),這取決于硬件平臺(tái)的浮點(diǎn)算法。由于是在內(nèi)部將類型F數(shù)據(jù)轉(zhuǎn)換為二進(jìn)制系統(tǒng),因此可能出現(xiàn)舍入誤差。盡管ABAP/4處理器試圖將這些影響減至最小,但是如果要求高精度,則不應(yīng)該使用類型F數(shù)據(jù)。而應(yīng)代之以類型P數(shù)據(jù)。如果需要大的數(shù)值范圍,而且舍入誤差不重要,則可以使用類型F數(shù)據(jù)。因?yàn)閷?duì)類型I和F字段的算術(shù)運(yùn)算與機(jī)器碼語句關(guān)系更緊密,所以用類型I和類型F字段的計(jì)算比用類型P字段的計(jì)算要快;同時(shí)對(duì)P字段的運(yùn)算要求更多的軟件支持。盡管如此,可能仍必須使用類型P數(shù)據(jù)以滿足精度或數(shù)值范圍的要求。類型N數(shù)據(jù)不包含數(shù)值。雖然由數(shù)字組成,但這些數(shù)字不用于計(jì)算。科目號(hào)和郵編是典型的類型N字段。setZ_028pagepage55根本數(shù)據(jù)類型-用戶定義的用戶定義的根本數(shù)據(jù)類型完全是以預(yù)定義的基本數(shù)據(jù)類型為基礎(chǔ)的。要定義自己的根本數(shù)據(jù)類型,請(qǐng)使用TYPES語句(參見TYPES語句(頁REFz_029page18))。用戶定義的根本數(shù)據(jù)類型使程序的閱讀和維護(hù)更加容易: 例如,如果在程序中經(jīng)常需要使用某數(shù)據(jù)類型集,通過為類型定義創(chuàng)立包括程序(參見LINKWord.Document.6"\\\\BOYS\\PUBLIC\\DOKU\\30D\\BC\\ENGLISH\\BCAB4\\BC11E.DOC""z_013"\a\t包含程序),或者在ABAP/4詞典的類型組中定義數(shù)據(jù)類型(參見使用類型組(頁REFz_061page23)),可以確保總是使用相同的數(shù)據(jù)類型。 若要使數(shù)據(jù)類型更易于理解和識(shí)別,可以賦予它們描述性的名稱。 在將用戶定義的數(shù)據(jù)類型分配給幾個(gè)數(shù)據(jù)對(duì)象之后,通過更改TYPES語句中數(shù)據(jù)類型的定義,可以用一個(gè)操作更改所有這些數(shù)據(jù)對(duì)象的數(shù)據(jù)類型。TYPES:NUMBERTYPEI,
LENGTHTYPEPDECIMALS2,
CODE(3)TYPECDATA:NO_FLIGHTSTYPENUMBER,
NO_PASSENGERSTYPENUMBER,DISTANCETYPELENGTH,
HEIGHTTYPELENGTH,
CITY_CODETYPECODE,
COUNTRY_CODETYPECODE,例如中,定義了名為NUMBER的數(shù)據(jù)類型。該數(shù)據(jù)類型除擁有不同名稱以使程序更易于閱讀外,與預(yù)定義的數(shù)據(jù)類型I相同。該例如中還定義了數(shù)據(jù)類型LENGTH,該數(shù)據(jù)類型是以預(yù)定義的根本數(shù)據(jù)類型P為基礎(chǔ)的。為L(zhǎng)ENGTH定義了給定數(shù)目的小數(shù)位。例如,如果需要更改長(zhǎng)度規(guī)格的精度,僅須在程序中更改TYPES語句。還定義了第三種數(shù)據(jù)類型CODE。CODE是以預(yù)定義的類型C為基礎(chǔ)的,具有給定長(zhǎng)度3。setZ_049pagepage55結(jié)構(gòu)化數(shù)據(jù)類型通常情況下,ABAP/4程序中的結(jié)構(gòu)化數(shù)據(jù)類型是用戶定義的。在ABAP/4中,沒有可用的預(yù)定義結(jié)構(gòu)化數(shù)據(jù)類型,但下列例外:可以使用預(yù)定義的一般表類型TABLE,以便將具有一般行結(jié)構(gòu)的內(nèi)表傳遞到子程序(參見LINKWord.Document.6"\\\\BOYS\\PUBLIC\\DOKU\\30D\\BC\\ENGLISH\\BCAB4\\BC11E.DOC""z_022"\a\t鍵入形式參數(shù)),或者鍵入字段符號(hào)(參見LINKWord.Document.6"\\\\BOYS\\PUBLIC\\DOKU\\30D\\BC\\ENGLISH\\BCAB4\\BC12E.DOC""z_013"\a\t鍵入字段符號(hào))。有兩種結(jié)構(gòu)化數(shù)據(jù)類型: 字段串字段串是其它數(shù)據(jù)類型的集合。字段串的組件可以是字段串本身或內(nèi)表。可以用TYPES語句或DATA語句(參見用于字段串的DATA語句(頁REFz_042page15))定義字段串。通過DATA語句不能定義獨(dú)立數(shù)據(jù)類型,而可以定義具有結(jié)構(gòu)化類型的數(shù)據(jù)對(duì)象。 內(nèi)表內(nèi)表由相同類型的幾行組成。與字段串僅“水平地〞擴(kuò)展不同,內(nèi)表還“垂直地〞擴(kuò)展。可以用TYPES或DATA語句的OCCURS參數(shù)定義內(nèi)表(參見創(chuàng)立內(nèi)表(頁Error!Notavalidlink.))。由于字段串能包含任何類型的組件,而且可以為任何類型定義內(nèi)表,所以自定義數(shù)據(jù)結(jié)構(gòu)可能變得非常復(fù)雜。結(jié)構(gòu)化數(shù)據(jù)類型例如以下是ABAP/4中結(jié)構(gòu)化數(shù)據(jù)類型的示例a) 由一系列根本數(shù)據(jù)類型組成的字段串(平鋪結(jié)構(gòu),僅“水平〞)b) 為基本字段定義的內(nèi)表(基本數(shù)據(jù)類型的動(dòng)態(tài)排列,僅“垂直〞)c) 為簡(jiǎn)單字段串定義的內(nèi)表(帶有行和列的表)d) 包含子結(jié)構(gòu)的結(jié)構(gòu)(嵌套結(jié)構(gòu))e) 結(jié)構(gòu),該結(jié)構(gòu)包含內(nèi)表作為組件(垂直結(jié)構(gòu))f) 為包含結(jié)構(gòu)化組件的字段串定義的內(nèi)表(垂直行類型的表)g) 為字段串定義的內(nèi)表,該字段串包含內(nèi)表作為組件setZ_057pagepage77數(shù)據(jù)類型的兼容性使用數(shù)據(jù)時(shí),有時(shí)需要將數(shù)據(jù)從一種類型轉(zhuǎn)換到另一種類型。要作到這一點(diǎn),數(shù)據(jù)類型必須是可轉(zhuǎn)換的(參見類型轉(zhuǎn)換(頁LINKWord.Document.6C:\\LIN\\BCAB4\\BC08E.DOPz_012page\a\tError!Notavalidlink.))。可轉(zhuǎn)換性的一個(gè)重要前提就是兼容性。如果兩個(gè)數(shù)據(jù)類型具有相同的技術(shù)屬性,則它們是兼容的。不同ABAP/4數(shù)據(jù)類型的后果如下:根本數(shù)據(jù)類型如果在類型、大小和(對(duì)于類型P)小數(shù)位等方面是相同的,則基本數(shù)據(jù)類型和其它根本數(shù)據(jù)類型是兼容的。根本數(shù)據(jù)類型與結(jié)構(gòu)化數(shù)據(jù)類型相互之間不兼容。結(jié)構(gòu)化數(shù)據(jù)類型對(duì)于結(jié)構(gòu)化數(shù)據(jù)類型,必須區(qū)分字段串和內(nèi)表。字段串如果字段串的結(jié)構(gòu)相同而且組件兼容,則字段串與其他字段串兼容。這意味著從根本字段構(gòu)造字段串,以便從子結(jié)構(gòu)形成整個(gè)結(jié)構(gòu)的方式必須相同,而且它們的根本組件必須相互兼容。如果兩個(gè)字段串由順序相同的基本字段組成,但這些字段組合成不同的子結(jié)構(gòu),則字段串不兼容。字段串與基本數(shù)據(jù)類型和內(nèi)表不兼容。內(nèi)表如果行類型兼容,則內(nèi)表與其他內(nèi)表兼容。內(nèi)表的兼容性不取決于行數(shù)。內(nèi)表與字段串和根本數(shù)據(jù)類型不兼容。在上述情況下,由于在ABAP/4程序運(yùn)行期間出現(xiàn)的每個(gè)數(shù)據(jù)類型是完全確定的(例如,數(shù)據(jù)類型C的長(zhǎng)度總是已定義并已知的),所以數(shù)據(jù)類型之間的兼容性總是涉及到已完全指定的數(shù)據(jù)類型。該兼容性是對(duì)稱的。在形式參數(shù)和字段符號(hào)鍵入的方面,使用有點(diǎn)不同的、非對(duì)稱的兼容性(參見LINKWord.Document.6"\\\\BOYS\\PUBLIC\\DOKU\\30D\\BC\\ENGLISH\\BCAB4\\BC11E.DOC""z_022"\a\t鍵入形式參數(shù)和LINKWord.Document.6"\\\\BOYS\\PUBLIC\\DOKU\\30D\\BC\\ENGLISH\\BCAB4\\BC12E.DOC""z_013"\a\t鍵入字段符號(hào))。setZ_036pagepage77數(shù)據(jù)對(duì)象在ABAP/4中,可以使用幾種數(shù)據(jù)對(duì)象,如下所示: 內(nèi)部數(shù)據(jù)對(duì)象創(chuàng)立內(nèi)部數(shù)據(jù)對(duì)象供在特定的程序中使用。在該程序之外無效。內(nèi)部數(shù)據(jù)對(duì)象包括: 外部數(shù)據(jù)對(duì)象外部數(shù)據(jù)對(duì)象獨(dú)立于程序。不能直接使用外部數(shù)據(jù)對(duì)象,但能將其復(fù)制到內(nèi)部數(shù)據(jù)對(duì)象,并在完成后將它們回寫。可以在整個(gè)系統(tǒng)環(huán)境中全局使用外部數(shù)據(jù)對(duì)象。ABAP/4將外部數(shù)據(jù)對(duì)象保存在ABAP/4詞典中定義的表中。要從程序內(nèi)部訪問該數(shù)據(jù),請(qǐng)用TABLES語句(參見TABLES語句(頁REFz_033page17))在程序中聲明該表。 系統(tǒng)定義的數(shù)據(jù)對(duì)象除用戶定義的數(shù)據(jù)對(duì)象外,還有一些數(shù)據(jù)對(duì)象由系統(tǒng)自動(dòng)定義。 特殊數(shù)據(jù)對(duì)象ABAP/4還包括一些具有特殊特征的數(shù)據(jù)對(duì)象,即:- 參數(shù)參數(shù)是鏈接到選擇屏幕的變量。參數(shù)可以在程序啟動(dòng)后接受數(shù)值。- 選擇標(biāo)準(zhǔn)選擇標(biāo)準(zhǔn)是用于指定數(shù)值范圍的特殊內(nèi)表。它們也與選擇屏幕相鏈接。關(guān)于這些數(shù)據(jù)對(duì)象及其聲明的詳細(xì)信息,參見LINKWord.Document.6"\\\\BOYS\\PUBLIC\\DOKU\\30D\\BC\\ENGLISH\\BCAB4\\BC18E.DOC""z_001"\a\t使用選擇屏幕。setZ_038pagepage88文字文字是固定值。ABAP/4區(qū)分文本文字和數(shù)字文字。文本文字文本文字是單引號(hào)內(nèi)的字母數(shù)字字符序列。'AntonySmith'
'69190Walldorf'文本文字最長(zhǎng)可達(dá)254個(gè)字符。如果某文本文字包含引號(hào),必須重復(fù)引號(hào),以使系統(tǒng)能夠?qū)?nèi)容識(shí)別為文本文字而不是文字的結(jié)尾。WRITE:/'ThisisJohn''sbicycle'.該語句生成以下輸出:ThisisJohn'sbicycle要確保程序仍易于維護(hù)并且獨(dú)立于語言,請(qǐng)勿在程序的最終版本中顯式地使用文本文字。而應(yīng)將其外部地定義為文本符號(hào)。文本符號(hào)是ABAP/4文字根本概念的一局部。關(guān)于這方面的詳細(xì)信息,以及關(guān)于如何創(chuàng)立和使用文本符號(hào)的詳細(xì)信息,參見處理文本摘要(頁LINKWord.Document.6C:\\LIN\\BCAB4\\BC07E.DOPz_001page\a\tError!Notavalidlink.)。數(shù)字文字?jǐn)?shù)字文字是可能包含前導(dǎo)符號(hào)的數(shù)字序列。可包含多達(dá)15個(gè)數(shù)字。123
-93
+456如果需要非整型數(shù)值或較長(zhǎng)的數(shù)字,則必須使用文本文字,該文本文字自動(dòng)轉(zhuǎn)換到正確的類型。(詳細(xì)信息,參見類型轉(zhuǎn)換(頁LINKWord.Document.6C:\\LIN\\BCAB4\\BC08E.DOPz_012page\a\tError!Notavalidlink.))。'123456789'
'+0.58498'
'-8473.67'同樣,請(qǐng)使用文本文字表示浮點(diǎn)數(shù)值。必須按照以下格式:'[<mantissa>][E][<exponent>]''-12.34567''-765E-04''1234E5''+12E+23''+12.3E-4''1E160'setZ_003pagepage99變量xe"變量"xe"數(shù)據(jù)對(duì)象,變量"變量用于以一定名稱按一定格式保存并參考數(shù)據(jù)。變量可能在以下方面不同 名稱 類型 長(zhǎng)度 結(jié)構(gòu)可以利用DATA語句在程序中聲明變量(參見DATA語句(頁REFz_030page11))。DATA:S1TYPEI,
S2TYPEI,
SUMTYPEISUM=S1+S2setZ_039pagepage1010常量xe"常數(shù)"xe"數(shù)據(jù)對(duì)象,常數(shù)"常量是包含值的數(shù)據(jù)對(duì)象,該值是在初始化時(shí)確定的。在程序執(zhí)行期間不能更改常量。在程序中利用常量語句聲明常量(參見CONSTANTS語句(頁REFz_031page16))。如果試圖在程序的其它地方更改常量,在語法檢查或運(yùn)行期間,系統(tǒng)將輸出錯(cuò)誤消息。也可以在ABAP/4詞典的類型組中聲明常量(參見使用類型組(頁REFz_061page23))。如果在程序中頻繁地需要某特殊數(shù)值,請(qǐng)使用常量。在這種情況下,請(qǐng)勿使用文字。如果需要修改該值,只須更改聲明。CONSTANTSPITYPEPDECIMALS10VALUE'3.1415926536'setZ_040pagepage1010系統(tǒng)定義的數(shù)據(jù)對(duì)象啟動(dòng)ABAP/4程序時(shí),一些數(shù)據(jù)對(duì)象自動(dòng)可用而無需聲明。系統(tǒng)定義的數(shù)據(jù)對(duì)象包括: SPACE數(shù)據(jù)對(duì)象SPACE是類型C的常量。長(zhǎng)為一個(gè)字符并包含空格。由于SPACE是常量,所以不能更改。 系統(tǒng)字段所有系統(tǒng)字段都有格式為SY-<name>的名稱,其中<name>指定單個(gè)字段。若要在ABAP/4編輯器中顯示可用系統(tǒng)字段的列表,請(qǐng)?jiān)诿钚兄墟I入“SHOWSY〞(請(qǐng)選擇“編輯->其它功能->命令輸入〞)。該列表還包括系統(tǒng)字段的數(shù)據(jù)類型。下面是系統(tǒng)字段例如: SY-SUBRC 返回代碼值(0,如果操作成功) SY-UNAME 用戶的登錄名 SY-DATUM 當(dāng)前日期 SY-UZEIT 當(dāng)前時(shí)間 SY-TCODE 當(dāng)前事務(wù)系統(tǒng)字段是變量并且可以由程序更改。但是,SAP不建議這樣做,因?yàn)樵诶^續(xù)執(zhí)行程序時(shí),將失去保存在這些字段中的信息。setZ_037pagepage1111創(chuàng)立數(shù)據(jù)對(duì)象和數(shù)據(jù)類型本節(jié)說明如何在程序中創(chuàng)立數(shù)據(jù)對(duì)象和數(shù)據(jù)類型。除文字外,還必須利用聲明語句聲明每個(gè)數(shù)據(jù)對(duì)象。在聲明語句中,必須指定所有數(shù)據(jù)對(duì)象的數(shù)據(jù)類型。要做到這一點(diǎn),可以使用數(shù)據(jù)類型(頁REFz_024page3)中說明的任何數(shù)據(jù)類型。在聲明語句中定義對(duì)象的數(shù)據(jù)類型,有以下方式之一 直接地,使用<declaration>...TYPE<datatype> 間接地,使用<declaration>LIKE<dataobject>對(duì)下面列出的大多數(shù)數(shù)據(jù)聲明語句,TYPE和LIKE是可選的附加項(xiàng)。利用TYPE選項(xiàng),可以直接將數(shù)據(jù)類型<datatype>分配給已聲明的數(shù)據(jù)對(duì)象。利用LIKE選項(xiàng),可以將另一個(gè)數(shù)據(jù)對(duì)象<dataobject>的數(shù)據(jù)類型分配給已聲明的數(shù)據(jù)對(duì)象。這意味著間接引用數(shù)據(jù)類型。對(duì)數(shù)據(jù)對(duì)象和數(shù)據(jù)類型有獨(dú)立的名稱空間。這意味著一個(gè)名稱既可以是數(shù)據(jù)類型名,同時(shí)又可以是數(shù)據(jù)對(duì)象名。在程序中,可以使用數(shù)據(jù)聲明語句靜態(tài)地定義數(shù)據(jù)對(duì)象,或者利用操作語句動(dòng)態(tài)地創(chuàng)立數(shù)據(jù)對(duì)象。ABAP/4包括以下用于靜態(tài)地創(chuàng)建數(shù)據(jù)對(duì)象和數(shù)據(jù)類型的關(guān)鍵字:DATA語句(頁REFz_030page11)用于創(chuàng)立變量CONSTANTS語句(頁REFz_031page16)用于創(chuàng)立常量STATICS語句(頁REFz_032page17)用于創(chuàng)建變量,這些變量在程序運(yùn)行期間一直存在,但僅在過程中可見TABLES語句(頁REFz_033page17)用于創(chuàng)立表工作區(qū)TYPES語句(頁REFz_029page18)用于創(chuàng)立用戶定義的數(shù)據(jù)類型在內(nèi)表環(huán)境中,可以使用操作語句APPEND、COLLECT和INSERT以動(dòng)態(tài)地創(chuàng)建內(nèi)表的行(參見填充內(nèi)表(頁Error!Notavalidlink.))。在選擇屏幕環(huán)境中,可以使用附加語句PARAMETERS和SELECT-OPTIONS以創(chuàng)立帶特殊功能的數(shù)據(jù)對(duì)象(參見LINKWord.Document.6"\\\\BOYS\\PUBLIC\\DOKU\\30D\\BC\\ENGLISH\\BCAB4\\BC18E.DOC""z_001"\a\t使用選擇屏幕)。setZ_030pagepage1111DATA語句使用DATA語句定義局部和全局變量。關(guān)于局部和全局變量間區(qū)別的詳細(xì)信息,參見LINKWord.Document.6"\\\\BOYS\\PUBLIC\\DOKU\\30D\\BC\\ENGLISH\\BCAB4\\BC11E.DOC""z_004"\a\t在調(diào)用程序和子系統(tǒng)之間傳遞數(shù)據(jù)。DATA語句有一個(gè)根本格式和三個(gè)主要變式,如下所示: 用于字段串的DATA語句 用于內(nèi)表的DATA語句 用于公用內(nèi)存塊的DATA語句。以下內(nèi)容說明DATA語句的根本格式以下內(nèi)容說明用于字段串的DATA語句由于內(nèi)表性質(zhì)的復(fù)雜性,將用一個(gè)獨(dú)立章節(jié)來說明該主題。關(guān)于定義內(nèi)表的詳細(xì)信息,參見創(chuàng)立和處理內(nèi)表(頁Error!Notavalidlink.)。由于聲明用于幾個(gè)程序的公用內(nèi)存塊與外部子程序有關(guān),所以將在涉及子程序的章節(jié)中解釋該主題(參見LINKWord.Document.6"\\\\BOYS\\PUBLIC\\DOKU\\30D\\BC\\ENGLISH\\BCAB4\\BC11E.DOC""z_010"\a\t聲明數(shù)據(jù)作為通用局部)。setZ_041pagepage1212DATA語句的根本格式可以在程序中使用DATA語句的根本格式以定義內(nèi)部變量。語法如下:語法DATA<f>[(<length>)]<type>[<value>][<decimals>].根本格式中,關(guān)鍵字DATA有以下參數(shù):參數(shù)用途命名變量(頁REFz_053page12)<f>指定變量的數(shù)據(jù)類型和長(zhǎng)度(頁REFz_054page13)<length><type>指定初始值(頁REFz_055page14)<value>指定小數(shù)位數(shù)(頁REFz_056page15)<decimals>setZ_053pagepage1212命名變量變量名<f>最長(zhǎng)可達(dá)30個(gè)字符。除下面列出的這些字符外,可以使用任何字母數(shù)字字符。 請(qǐng)勿使用以下字符- 加號(hào)+- 句點(diǎn).- 逗號(hào),- 冒號(hào):- 圓括號(hào)() 請(qǐng)勿創(chuàng)立完全由數(shù)字字符組成的名稱ABAP/4包含具有保留名(不允許使用這些保存名)的預(yù)定義數(shù)據(jù)對(duì)象(參見系統(tǒng)定義的數(shù)據(jù)對(duì)象(頁REFz_040page10))。另外,如果變量名與引導(dǎo)語句的關(guān)鍵字的參數(shù)相混淆,則請(qǐng)勿在語句中使用該變量名。書寫DATA語句時(shí),請(qǐng)遵循這些指南: 使用不要求附加說明的有意義的字段名。 因?yàn)檫B字符指示字段串,所以不要使用連字符(參見用于字段串的DATA語句(頁REFz_042page15))。 使用下劃線以別離長(zhǎng)名稱。 防止所有其它特殊字符。 始終使用字母作為字段名的第一個(gè)字符。無需說明的字段名例如:GROUP_TOTAL
ACCOUNT_NO
FOREIGN_CURRENCY
BANK_CODEsetZ_054pagepage1313指定變量的數(shù)據(jù)類型和長(zhǎng)度要指定數(shù)據(jù)類型,請(qǐng)使用<type>參數(shù)。可以使用以下任一形式創(chuàng)立<type>參數(shù): TYPE<t> LIKE<g>TYPE參數(shù)利用TYPE參數(shù),可以指定預(yù)定義數(shù)據(jù)類型或用戶定義的數(shù)據(jù)類型(參見數(shù)據(jù)類型(頁REFz_024page3))。語法如下:語法DATA<f>[(<length>)]TYPE<t>.通過在<length>中指定所需的長(zhǎng)度,可以為一些基本數(shù)據(jù)類型定義長(zhǎng)度。但僅對(duì)字段類型C、P、N和X才是可能的。關(guān)于默認(rèn)值和有效值,參見根本數(shù)據(jù)類型-預(yù)定義的(頁REFz_027page3)中的表。利用TYPE參數(shù)指定數(shù)據(jù)類型例如:DATA:NUMBERTYPEP,
DATETYPED,
HEXADECIMALFIELDTYPEX,
COUNTTYPEI,
LINE(72)TYPEC.LIKE參數(shù)利用LIKE參數(shù),可以將已定義數(shù)據(jù)對(duì)象的數(shù)據(jù)類型分配給變量。語法如下:語法DATA<f>LIKE<g>.使用LIKE參數(shù)時(shí),按照與數(shù)據(jù)對(duì)象<g>完全相同的類型和結(jié)構(gòu)創(chuàng)立字段<f>。可將任何數(shù)據(jù)對(duì)象用于<g>。利用LIKE參數(shù),可以引用在ABAP/4詞典中聲明的數(shù)據(jù)對(duì)象的數(shù)據(jù)類型。DATANUMBER_1TYPEP.
DATANUMBER_2LIKENUMBER_1.
DATAMYNAMELIKESY-UNAME.例如中,用與數(shù)據(jù)對(duì)象NUMBER_1相同的數(shù)據(jù)類型聲明數(shù)據(jù)對(duì)象NUMBER_2。數(shù)據(jù)對(duì)象MYNAME與系統(tǒng)定義的數(shù)據(jù)對(duì)象SY-UNAME具有相同的數(shù)據(jù)類型。LIKE參數(shù)常用于附屬字段以臨時(shí)保存數(shù)據(jù)庫(kù)字段的內(nèi)容。該機(jī)制可以防止由于鍵入錯(cuò)誤,或更改數(shù)據(jù)庫(kù)字段的定義而引起的無意的差異。例如,如果更改數(shù)據(jù)庫(kù)字段的屬性,則系統(tǒng)自動(dòng)改寫備份字段的屬性。DATAPLANELIKESFLIGHT-PLANETYPE.該語句創(chuàng)立與ABAP/4詞典字段SFLIGHT-PLANETYPE具有相同屬性、名為PLANE的數(shù)據(jù)對(duì)象。PLANETYPE是數(shù)據(jù)庫(kù)表SFLIGHT的一列。要?jiǎng)?chuàng)立與現(xiàn)有內(nèi)表的行具有相同數(shù)據(jù)類型的數(shù)據(jù)對(duì)象<f>,請(qǐng)使用LIKE參數(shù),如下所示:語法DATA<f>LIKELINEOF<itab>.在這種情況下,<itab>必須是作為內(nèi)表創(chuàng)立的數(shù)據(jù)對(duì)象(參見創(chuàng)立內(nèi)表數(shù)據(jù)對(duì)象(頁Error!Notavalidlink.))。類型和長(zhǎng)度的默認(rèn)值如果未在DATA語句中指定參數(shù)<length>和<type>,則創(chuàng)立長(zhǎng)度為1的字符字段(類型C)。如果指定長(zhǎng)度,但未指定類型,則創(chuàng)立給定長(zhǎng)度的字符字段。DATATEXTFIELD.例如創(chuàng)立長(zhǎng)度為1的字符字段TEXTFIELD。setZ_055pagepage1414指定初始值利用DATA語句聲明內(nèi)部變量時(shí),將隱式地給字段分配初始值。關(guān)于不同數(shù)據(jù)類型初始值的詳細(xì)信息,參見根本數(shù)據(jù)類型-預(yù)定義的(頁REFz_027page3)中的表。要更改字段的初始值,請(qǐng)使用DATA語句的<value>參數(shù)。語法如下:語法DATA<f>VALUE<val>.將字段<f>的初始值設(shè)為<val>,其中<val>可以是 文字(參見文字(頁REFz_038page8)) 常量(參見常量(頁REFz_039page10)) 顯式的附加項(xiàng)ISINITIAL初始值規(guī)格例如:DATA:COUNTERTYPEPVALUE1,
DATETYPEDVALUE'19920601',
FLAGTYPECVALUEISINITIAL.聲明該數(shù)據(jù)以后,字符串FLAG包含其默認(rèn)初始值SPACE。setZ_056pagepage1515指定小數(shù)位數(shù)xe"十進(jìn)制"xe"數(shù)據(jù)對(duì)象,十進(jìn)制數(shù)字"要定義類型P字段的小數(shù)位數(shù),請(qǐng)使用<decimals>參數(shù)。語法如下:語法DATA<f>TYPEPDECIMALS<d>小數(shù)位數(shù)<d>的最大值是14(參見數(shù)字?jǐn)?shù)據(jù)類型(頁REFz_043page4))。可以將數(shù)據(jù)對(duì)象分配給壓縮碼類型變量,而該數(shù)據(jù)對(duì)象具有比變量更多的小數(shù)位。如果已將程序?qū)傩灾付椤岸c(diǎn)運(yùn)算〞(參見指定程序?qū)傩?頁LINKWord.Document.6C:\\LIN\\BCAB4\\BC03E.DOPz_005page\a\tError!Notavalidlink.)),則將多余的位數(shù)進(jìn)行四舍五入。DATAWEIGHTTYPEPDECIMALS2VALUE'1.225'.如果將屬性設(shè)置為“定點(diǎn)運(yùn)算〞,則WEIGHT的值為1.23。setZ_042pagepage1515用于字段串的DATA語句字段串是程序中的一組內(nèi)表。要聲明字段串,請(qǐng)使用DATA語句并用BEGINOF和ENDOF標(biāo)記該字段組的起始和結(jié)束。語法如下:語法DATA:BEGINOF<fstring>,
<componentdeclaration>,
ENDOF<fstring>.這些語句定義了字段串<fstring>。在<componentdeclaration>中,通過指定長(zhǎng)度、類型和初始值或小數(shù)位數(shù)(如果需要),可以如DATA語句的根本格式(頁REFz_041page12)中說明的那樣聲明組件字段。通過將字段串名作為前綴,并用連字符將字段串和組件連接起來:<fstring>-<component>,可以定址字段串中的各個(gè)組件。字段串的組件可以有不同的數(shù)據(jù)類型。由于類型I或F的字段是對(duì)齊的(參見對(duì)齊數(shù)據(jù)對(duì)象(頁LINKWord.Document.6C:\\LIN\\BCAB4\\BC08E.DOPz_070page\a\tError!Notavalidlink.)),所以如果需要,系統(tǒng)將在組件之間插入空填充字段。有時(shí)也將字段串稱為記錄或結(jié)構(gòu)。DATA:BEGINOFADDRESS,
NAME(20)TYPEC,
STREET(20)TYPEC,
NUMBERTYPEP,
POSTCODE(5)TYPEN,
CITY(20)TYPEC,
ENDOFADDRESS.該例如定義了一個(gè)長(zhǎng)度為73的字段串ADDRESS。可以通過ADDRESS-NAME、ADDRESS-STREET等定址組件。可以將長(zhǎng)字段串的聲明收集在包括程序中(參見LINKWord.Document.6"\\\\BOYS\\PUBLIC\\DOKU\\30D\\BC\\ENGLISH\\BCAB4\\BC11E.DOC""z_013"\a\t包含程序)。但是,如果頻繁使用該數(shù)據(jù)結(jié)構(gòu),則最好將它們保存在ABAP/4詞典中。關(guān)于該主題的詳細(xì)信息,參見文檔ABAP/4詞典(頁Error!Notavalidlink.)。setZ_031pagepage1616CONSTANTS語句如果在程序中頻繁使用某常量,可以利用常量語句,將其聲明為具有固定值的變量,如下所示:語法CONSTANTS<c>[<length>]<type><value>[<decimals>].要將字段串定義為常量,請(qǐng)寫:CONSTANTS:BEGINOF<fstring>,
<componentdeclaration>,
ENDOF<fstring>.這些語句的參數(shù)與DATA語句的根本格式(頁REFz_041page12)和用于字段串的DATA語句(頁REFz_042page15)中說明的DATA語句的參數(shù)相同。有關(guān)說明請(qǐng)參閱這些主題。對(duì)于常量語句必須使用<value>參數(shù),而在DATA語句中該參數(shù)是可選的。利用<value>參數(shù)指定的初始值,在程序的執(zhí)行期間不能更改。CONSTANTS:MYNAME(10)VALUE'Fred',
BIRTHDAYTYPEDVALUE'19600110',
ZEROTYPEIVALUEISINITIAL.例如的最后一行說明了變量ISINITIAL的用途。由于對(duì)于常量語句,參數(shù)VALUE是必須的,所以可以使用ISINITIAL給常量分配默認(rèn)值。CONSTANTS:BEGINOFMYADDRESS,
NAME(20)TYPECVALUE'FredFlintstone',
STREET(20)TYPECVALUE'CaveAvenue',
NUMBERTYPEPVALUE11,
POSTCODE(5)TYPENVALUE98765,
CITY(20)TYPECVALUE'Bedrock',
ENDOFMYADDRESS.該例如定義了常量字段串MYADDRESS。可以利用MYADDRESS-NAME、MYADDRESS-STREET等定址組件,但不能更改組件。setZ_032pagepage1717STATICS語句如果要在過程(子程序或功能模塊-詳細(xì)信息,參見LINKWord.Document.6"\\\\BOYS\\PUBLIC\\DOKU\\30D\\BC\\ENGLISH\\BCAB4\\BC11E.DOC""z_001"\a\t模塊化ABAP/4程序)的運(yùn)行時(shí)間之外仍保留某變量的數(shù)值,可以在該過程中利用STATICS語句定義該變量。STATICS語句是DATA語句的變異。語法如下:語法STATICS<s>[<length>]<type>[<value>][<decimals>].要在過程中將字段串定義為靜態(tài)有效,請(qǐng)寫:STATICS:BEGINOF<fstring>,
<componentdeclaration>,
ENDOF<fstring>.這些語句的參數(shù)與DATA語句的根本格式(頁REFz_041page12)和用于字段串的DATA語句(頁REFz_042page15)中說明的DATA語句的參數(shù)相同。有關(guān)說明請(qǐng)參閱這些主題。如果在程序中屢次調(diào)用某過程,對(duì)于利用STATICS定義的變量,過程總是使用該變量的最新值。不能從過程外部定址靜態(tài)變量。setZ_033pagepage1717TABLES語句利用TABLES語句,可以創(chuàng)立稱為表工作區(qū)的數(shù)據(jù)對(duì)象。表工作區(qū)是參考ABAP/4詞典對(duì)象的字段串。語法如下:語法:TABLES<dbtab>.<dbtab>是ABAP/4詞典對(duì)象的名稱,同時(shí)也是創(chuàng)立的表工作區(qū)的名稱。表工作區(qū)組件的順序和名稱與在ABAP/4詞典中聲明的對(duì)象相同。可以引用的有效ABAP/4詞典對(duì)象是 結(jié)構(gòu)(參見文檔ABAP/4詞典(頁Error!Notavalidlink.)) 視圖(參見文檔ABAP/4詞典(頁Error!Notavalidlink.)) 數(shù)據(jù)庫(kù)表(參見LINKWord.Document.6"\\\\BOYS\\PUBLIC\\DOKU\\30D\\BC\\ENGLISH\\BCAB4\\BC13E.DOC""z_000"\a\t讀取和處理數(shù)據(jù)表)要在ABAP/4詞典中創(chuàng)立對(duì)象,請(qǐng)?jiān)赗/3初始屏幕上,選擇
工具->ABAP/4工作臺(tái)->開發(fā)->ABAP/4詞典。
表工作區(qū)提供一個(gè)接口,通過該接口可以將數(shù)據(jù)從數(shù)據(jù)庫(kù)表加載到程序,或利用開放式SQL語句修改數(shù)據(jù)庫(kù)表的內(nèi)容(參見讀取并處理數(shù)據(jù)庫(kù)表(頁LINKWord.Document.6C:\\LIN\\BCAB4\\BC13E.DOPz_000page\a\tError!Notavalidlink.))。要顯示表的組件及其數(shù)據(jù)類型的列表,請(qǐng)?jiān)贏BAP/4編輯器的命令行中(選擇“編輯->其它功能->命令輸入〞)鍵入“SHOW<dbtab>〞。ABAP/4詞典對(duì)象的數(shù)據(jù)類型與ABAP/4類型概念的數(shù)據(jù)類型不同。關(guān)于ABAP/4詞典數(shù)據(jù)類型的列表,以及它們?cè)贏BAP/4程序中與數(shù)據(jù)類型如何對(duì)應(yīng)的詳細(xì)信息,請(qǐng)參閱TABLES語句的關(guān)鍵字文檔。要定址表工作區(qū)的組件,可以將表名作為前綴,然后用連字符添加組件:<dbtab>-<component>(參見用于字段串的DATA語句(頁REFz_042page15))。TABLES:SPFLI.SELECT*FROMSPFLI.
WRITE:SPFLI-MANDT,SPFLI-CARRID,SPFLI-CONNID,
ENDSELECT.例如中,TABLES語句創(chuàng)立表工作區(qū)SPFLI。SPFLI與ABAP/4詞典中聲明的數(shù)據(jù)庫(kù)表SPFLI結(jié)構(gòu)相同。在SELECT循環(huán)中,用屬于數(shù)據(jù)庫(kù)表SPFLI的行填充表工作區(qū)SPFLI(參見LINKWord.Document.6"\\\\BOYS\\PUBLIC\\DOKU\\30D\\BC\\ENGLISH\\BCAB4\\BC13E.DOC""z_000"\a\t讀取并處理數(shù)據(jù)表)。setZ_029pagepage1818TYPES語句xe"創(chuàng)立數(shù)據(jù)類型"xe"類型"xe"數(shù)據(jù)類型,創(chuàng)立"可以使用TYPES語句創(chuàng)立用戶定義的基本數(shù)據(jù)類型和結(jié)構(gòu)化數(shù)據(jù)類型。對(duì)由TYPES語句定義的數(shù)據(jù)類型,可以按與使用預(yù)定義數(shù)據(jù)類型聲明數(shù)據(jù)對(duì)象相同的方法進(jìn)行使用。語法如下:語法TYPES<t>[<length>]<type>[<decimals>].該語句定義數(shù)據(jù)類型<t>。要定義結(jié)構(gòu)化數(shù)據(jù)類型,請(qǐng)寫:TYPES:BEGINOF<fstring>,
<componentdeclaration>,
ENDOF<fstring>.這些語句的參數(shù)與DATA語句的根本格式(頁REFz_041page12)和用于字段串的DATA語句(頁REFz_042page15)中所說明的DATA語句的參數(shù)相同。有關(guān)說明請(qǐng)參閱這些主題。由于沒有與數(shù)據(jù)類型相關(guān)聯(lián)的內(nèi)存,所以無法在TYPES語句中使用<value>參數(shù)。因此,不能給數(shù)據(jù)類型分配值。TYPES:SURNAME(20)TYPEC,BEGINOFADDRESS,
NAMETYPESURNAME,
ENDOFADDRESS.DATA:ADDRESS_1TYPEADDRESS,ADDRESS_2TYPEADDRESS,例如說明如何使用參數(shù)TYPE直接引用用戶定義的數(shù)據(jù)類型。其中主要有三件事情。第一,創(chuàng)立長(zhǎng)為20、類型為C的用戶定義的數(shù)據(jù)類型SURNAME。第二,定義結(jié)構(gòu)化數(shù)據(jù)類型ADDRESS。將數(shù)據(jù)類型SURNAME賦給ADDRESS、ADDRESS-NAME的組件。第三,創(chuàng)立作為字段串的數(shù)據(jù)對(duì)象ADDRESS_1、ADDRESS_2...,將它們的類型指定為ADDRESS。DATACOUNTSTYPEI.TYPES:COMPANYLIKESPFLI-CARRID,
NO_FLIGHTSLIKECOUNTS.例如說明在TYPES語句中LIKE參數(shù)的使用。說明如何通過引用已有數(shù)據(jù)對(duì)象類型創(chuàng)立數(shù)據(jù)類型。最重要的是,如用戶定義的數(shù)據(jù)類型COMPANY所示,可以創(chuàng)立引用ABAP/4詞典對(duì)象的類型。COMPANY引用ABAP/4詞典對(duì)象CARRID,CARRID是數(shù)據(jù)庫(kù)表SPFLI的一列。*引用預(yù)定義類型的用戶定義的類型:TYPES:SURNAME(20)TYPEC,
STREET(30)TYPEC,
ZIP_CODE(10)TYPEN,
CITY(30)TYPEC,
PHONE(20)TYPEN,
DATELIKESY-DATUM.*User-definedstructuredtypereferringtoabovetypes:TYPES:BEGINOFADDRESS,
NAMETYPESURNAME,
CODETYPEZIP_CODE,
TOWNTYPECITY,
STRTYPESTREET,
ENDOFADDRESS.*User-definednestedstructuretypereferringtoabovetypes:TYPES:BEGINOFPHONE_LIST,
ADRTYPEADDRESS,
TELTYPEPHONE,
ENDOFPHONE_LIST.DATAPLTYPEPHONE-LISTWRITEPL-ADR-NAME.該例如說明如何從簡(jiǎn)單類型定義創(chuàng)建復(fù)雜數(shù)據(jù)類型。利用ABAP/4預(yù)定義類型創(chuàng)立一組簡(jiǎn)單數(shù)據(jù)類型以后,使用此前定義的數(shù)據(jù)類型定義結(jié)構(gòu)化類型ADDRESS。最后,創(chuàng)立嵌套結(jié)構(gòu)類型PHONE_LIST,該類型的第一個(gè)組件具有結(jié)構(gòu)化類型ADDRESS。例如的最后一行顯示如何利用類型PHONE_LIST創(chuàng)立數(shù)據(jù)對(duì)象PL,以及如何定址其組件。關(guān)于如何在數(shù)據(jù)類型結(jié)構(gòu)中包括內(nèi)表的詳細(xì)信息,參見創(chuàng)立并處理內(nèi)表(頁Error!Notavalidlink.)。setZ_050pagepage2020例如匯總為匯總在上述主題中的信息,以下主題包含4個(gè)例如,這些例如覆蓋了在ABAP/4中聲明數(shù)據(jù)類型和數(shù)據(jù)對(duì)象的全部重要特征:setZ_051pagepage2020預(yù)定義根本數(shù)據(jù)類型和對(duì)象例如以下程序是有關(guān)如何利用預(yù)定義基本數(shù)據(jù)類型聲明數(shù)據(jù)對(duì)象的例如。PROGRAMSAPMZTST.DATATEXT1(14)TYPEC.
DATATEXT2LIKETEXT1.
DATANUMBERTYPEI.TEXT1='Thenumber'.
NUMBER=100.
TEXT2='isaninteger.'.WRITE:TEXT1,NUMBER,TEXT2.該程序在屏幕上產(chǎn)生下列輸出:Thenumber100isaninteger.例如中,用DATA語句聲明數(shù)據(jù)對(duì)象TEXT1、TEXT2和NUMBER。利用DATA語句的TYPE參數(shù)或LIKE參數(shù)為每個(gè)數(shù)據(jù)對(duì)象指定數(shù)據(jù)類型。此處使用的數(shù)據(jù)類型(C、I)是在系統(tǒng)中預(yù)定義的。然后,給數(shù)據(jù)對(duì)象分配數(shù)值,并在屏幕上顯示數(shù)據(jù)對(duì)象的內(nèi)容。setZ_059pagepage2020用戶定義的根本數(shù)據(jù)類型和對(duì)象示例以下程序是有關(guān)如何利用用戶定義的根本數(shù)據(jù)類型聲明數(shù)據(jù)對(duì)象的示例。PROGRAMSAPMZTST.TYPESMYTEXT(10)TYPEC.
TYPESMYAMOUNTTYPEPDECIMALS2.DATATEXTTYPEMYTEXT.
DATAAMOUNTTYPEMYAMOUNT.TEXT='4/3='.
AMOUNT=4/3.WRITE:TEXT,AMOUNT.該程序在屏幕上產(chǎn)生下列輸出:4/3=1.33例如中,用TYPES語句定義用戶定義的數(shù)據(jù)類型MYTEXT和MYAMOUNT,該TYPES語句引用系統(tǒng)預(yù)定義的根本數(shù)據(jù)類型。然后,用DATA語句聲明數(shù)據(jù)對(duì)象TEXT和AMOUNT。將它們的數(shù)據(jù)類型確定為MYTEXT和MYAMOUNT。給數(shù)據(jù)對(duì)象分配值,并在屏幕上顯示數(shù)據(jù)對(duì)象的內(nèi)容。setZ_052pagepage2121字段串例如以下程序是有關(guān)如何將結(jié)構(gòu)化數(shù)據(jù)對(duì)象聲明為字段串的示例。PROGRAMSAPMZTST.TYPES:BEGINOFNAME,
TITLE(5)TYPEC,
FIRST_NAME(10)TYPEC,LAST_NAME(10)TYPEC,
ENDOFNAME.TYPES:BEGINOFMYLIST,
CLIENTTYPENAME,
NUMBERTYPEI,
ENDOFMYLIST.DATALISTTYPEMYLIST.LIST-CLIENT-TITLE='Lord'.
LIST-CLIENT-FIRST_NAME='Howard'.
LIST-CLIENT-LAST_NAME='MacDuff'.
LIST-NUMBER=1.WRITELIST-CLIENT-TITLE.
WRITELIST-CLIENT-FIRST_NAME.
WRITELIST-CLIENT-LAST_NAME.
WRITE/'Number'.
WRITELIST-NUMBER.該程序在屏幕上產(chǎn)生下列輸出:LordHowardMacDuff
Number1例如中,用TYPES語句定義結(jié)構(gòu)化數(shù)據(jù)類型NAME和MYLIST。字段串NAME包含三個(gè)具有預(yù)定義基本數(shù)據(jù)類型C的組件TITLE、FIRST_NAME和LAST_NAME。字段串MYLIST包含兩個(gè)組件,即CLIENT和NUMBER。由于已給定CLIENT數(shù)據(jù)類型NAME,所以CLIENT本身已結(jié)構(gòu)化。NUMBER是根本的,并具有預(yù)定義數(shù)據(jù)類型I。用數(shù)據(jù)類型MYLIST聲明結(jié)構(gòu)化數(shù)據(jù)對(duì)象LIST。給組件分配值,并在屏幕上顯示它們的內(nèi)容。setZ_060pagepage2222內(nèi)表例如以下程序是有關(guān)如何將結(jié)構(gòu)化數(shù)據(jù)對(duì)象聲明為內(nèi)表的例如。PROGRAMSAPMZTST.TYPES:BEGINOFMYSTRING,
NUMBERTYPEI,
NAME(10)TYPEC,
ENDOFMYSTRING.TYPESMYTABTYPEMYSTRINGOCCURS5.DATASTRINGTYPEMYSTRING.
DATAITABTYPEMYTAB.STRING-NUMBER=1.STRING-NAME='John'.
APPENDSTRINGTOITAB.
STRING-NUMBER=2.STRING-NAME='Paul'.
APPENDSTRINGTOITAB.
STRING-NUMBER=3.STRING-NAME='Ringo'.
APPENDSTRINGTOITAB.
STRING-NUMBER=4.STRING-NAME='George'.
APPENDSTRINGTOITAB.LOOPATITABINTOSTRING.
WRITE:/STRING-NUMBER,STRING-NAME.
ENDLOOP.該程序在屏幕上產(chǎn)生下列輸出:1John
2Paul
3Ringo
4George例如中,首先將數(shù)據(jù)類型MYSTRING定義為字段串。然后,根據(jù)字段串MYSTRING,利用TYPES語句的OCCURS參數(shù)將數(shù)據(jù)類型MYTAB定義為內(nèi)表。利用數(shù)據(jù)類型MYSTRING和MYTAB聲明數(shù)據(jù)對(duì)象STRING和ITAB。然后逐行填充內(nèi)表ITAB的字段。通過使用字段串STRING,在屏幕上顯示ITAB的內(nèi)容。關(guān)于內(nèi)表的詳細(xì)信息,參見創(chuàng)立并處理內(nèi)表(頁Error!Notavalidlink.)。setZ_061pagepage2323使用類型組可以使用類型組將用戶定義的數(shù)據(jù)類型或常量存儲(chǔ)在ABAP/4詞典中,以便在程序之間使用。在ABAP/4程序中,可以利用TYPE-POOLS語句聲明類型組,如下所示:語法TYPE-POOLS<name>.該語句允許您使用程序中的類型組<name>中定義的全部數(shù)據(jù)類型和常量。在同一個(gè)程序中可以使用多個(gè)類型組。可以通過選擇“工具->ABAP/4工作臺(tái)->開發(fā)->ABAP/4詞典〞,或直接從ABAP/4程序維護(hù)類型組。在第一種情況下,在“ABAP/4詞典:初始屏幕〞上的“對(duì)象名〞字段中,為類型組指定一個(gè)1到5個(gè)字符的名稱,然后選擇“類型組〞,接著選擇“顯示〞、“更改〞或“創(chuàng)立〞:在第二種情況下,可以雙擊ABAP/4程序中TYPE-POOLS語句后的類型組的名稱<name>。如果不存在該名稱的類型組,可以創(chuàng)立它。否則,系統(tǒng)顯示現(xiàn)有類型組的定義,然后可以對(duì)它進(jìn)行更改。類型組的定義是在ABAP/4編輯器中輸入的ABAP/4代碼的一部分。用于類型組<name>的第一條語句始終為:語法TYPE-POOL<name>.緊接其后的是利用語句TYPES和常量的數(shù)據(jù)類型和/或常量的定義(如同TYPES語句(頁REFz_029page18)和CONSTANTS語句(頁REFz_031page16)所述)。這些數(shù)據(jù)類型和常量的所有名稱必須以類型組的名稱和下劃線開始:<name>_。在ABAP/4詞典中創(chuàng)立類型組HKTST,如下所示:TYPE-POOLHKTST.TYPES:BEGINOFHKTST_TYP1,
COL1(10),
COL2TYPEI,
ENDOFHKTST_TYP1.TYPESHKTST_TYP2TYPEPDECIMALS2.CONSTANTSHKTST_ELEVENTYPEIVALUE11.該類型組不但定義兩個(gè)數(shù)據(jù)類型HKTST_TYP1和HKTST_TYP2,而且定義了一個(gè)值為11的常量。任何ABAP/4程序都可以如同以下程序那樣,利用TYPE-POOLS語句使用該定義:PROGRAMSAPMZTST.TYPE-POOLSHKTST.DATA:DAT1TYPEHKTST_TYP1,
DAT2TYPEHKTST_TYP2VALUE'1.23'.WRITE:DAT2,/HKTST_ELEVEN.輸出為:1.2311類型組中定義的數(shù)據(jù)類型,用于利用DATA語句聲明數(shù)據(jù)對(duì)象,而且正如輸出所顯示的那樣,在程序中常量的值是的。setZ_006pagepage2424確定數(shù)據(jù)對(duì)象的屬性xe"DESCRIBEFIELD"xe"數(shù)據(jù)對(duì)象,屬性"xe"數(shù)據(jù)對(duì)象屬性"如果要查明數(shù)據(jù)對(duì)象的數(shù)據(jù)類型,或者要在程序的運(yùn)行期間使用其屬性,請(qǐng)使用DESCRIBE語句。語法如下:語法DESCRIBEFIELD<f>[LENGTH<l>][TYPE<t>[COMPONENTS<n>]]
[OUTPUT-LENGTH<o>][DECIMALS<d>]
[EDITMASK<m>].將由語句的參數(shù)指定的數(shù)據(jù)對(duì)象<f>的屬性寫入?yún)?shù)后的變量。DESCRIBEFIELDS語句具有下列參數(shù):參數(shù)用途確定字段長(zhǎng)度(頁REFz_044page25)LENGTH確定數(shù)據(jù)類型(頁REFz_045page25)TYPE確定輸出長(zhǎng)度(頁REFz_046page26)OUTPUT-LENGTH確定小數(shù)位(頁REFz_047page27)DECIMALS確定轉(zhuǎn)換例程(頁REFz_048page27)EDITMASKsetZ_044pagepage2525確定字段長(zhǎng)度要確定數(shù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 英語就業(yè)協(xié)議書
- 考學(xué)輔導(dǎo)協(xié)議書
- 配合工作協(xié)議書
- 村集體學(xué)校收購(gòu)協(xié)議書
- 小紅書開店合作協(xié)議書
- 退伙結(jié)算協(xié)議書
- 維護(hù)代理協(xié)議書
- 幼兒園長(zhǎng)期服藥協(xié)議書
- 股東租車協(xié)議書
- 工程款劃分合同協(xié)議書
- 2024年四川省成都市中考數(shù)學(xué)試題含答案
- DL∕T 612-2017 電力行業(yè)鍋爐壓力容器安全監(jiān)督規(guī)程
- 自然資源價(jià)格評(píng)估通則 TD/T 1061-2021
- 貴州2024年貴州醫(yī)科大學(xué)招聘專職輔導(dǎo)員筆試歷年典型考題及考點(diǎn)附答案解析
- 2022版科學(xué)課程標(biāo)準(zhǔn)解讀-面向核心素養(yǎng)的科學(xué)教育(課件)
- 駕駛員心理健康教育培訓(xùn)
- JT-T 1488-2024 網(wǎng)絡(luò)平臺(tái)道路貨物運(yùn)輸服務(wù)規(guī)范
- 2024年四川二造《建設(shè)工程造價(jià)管理基礎(chǔ)知識(shí)》考前強(qiáng)化練習(xí)題庫(kù)300題(含解析)
- 《客艙安全與應(yīng)急處置》-課件:顛簸處置程序
- 海洋的前世今生智慧樹知到期末考試答案2024年
- 財(cái)政預(yù)算監(jiān)督培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論