版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、數(shù)據(jù)類型C :字符串D :日期型 格式為 YYYYMMDD 例:1999/12/03F : 浮點數(shù) 長度為8I :整數(shù)N :數(shù)值組成的字符串 如:011,302P : PACKED數(shù) 用于小數(shù)點數(shù)值 如:12.00542T : 時刻 格式為:HHMMSS 如:14:03:00X : 16進(jìn)制數(shù) 如:1A03*變數(shù)宣告DATA decimals 變數(shù)名稱 變數(shù)類型 及 長度 初值 小數(shù)位數(shù)exp:DATA : COUNTER TYPE P DECIMALS 3.NAME(10) TYPE C VALUE DELTA.S_DATE TYPE D VALUE 19991203.exp:DATA :
2、BEGIN OF PERSON,NAME(10) TYPE C,AGE TYPE I,WEIGHT TYPE DECIMALS 2,END OF PERSON.另外,有關(guān)DATA宣告的指令還有: CONSTANTS(宣告常數(shù))、STATICS(臨時變數(shù)宣告).exp:CONSTANTS PI TYPE P DECIMALS 5 VALUE 3.14159.STATICS 敘述宣告的變數(shù)僅在目前的程式中使用, 結(jié)束後會自動釋放 語法: STATICS 系統(tǒng)專用變數(shù)說明系統(tǒng)內(nèi)部專門創(chuàng)建了SYST這個STRUCTURE,里面的欄位存放系統(tǒng)變數(shù),常用的系統(tǒng)變數(shù)有:SY-SUBRC : 系統(tǒng)執(zhí)行某指令后
3、,表示執(zhí)行成功與否的變數(shù),0 表示成功SY-UNAME: 當(dāng)前使用者登入SAP的USERNAME;SY-DATUM: 當(dāng)前系統(tǒng)日期;SY-UZEIT: 當(dāng)前系統(tǒng)時間;SY-TCODE: 當(dāng)前執(zhí)行程式的Transaction codeSY-INDEX : 當(dāng)前LOOP循環(huán)過的次數(shù)SY-TABIX: 當(dāng)前處理的是internal table 的第幾筆SY-TMAXL: Internal table的總筆數(shù)SY-SROWS: 屏幕總行數(shù);SY-SCOLS: 屏幕總列數(shù);SY-MANDT: CLIENT NUMBERSY-VLINE: 畫豎線SY-ULINE: 畫橫線TYPE 敘述用來指定資料型態(tài)或宣
4、告自定資料型態(tài)Example:TYPES: BEGIN OF MYLIST,NAME(10) TYPE C,NUMBER TYPE I,END OF MYLIST.DATA LIST TYPE MYLIST.LIKE 敘述跟TYPE敘述使用格式相同, 如DATA TRANSCODE LIKE SY-TCODE.不同的是 LIKE 用在已有值的資料項, 如系統(tǒng)變數(shù), 而TYPE敘述則是用在指定資料型態(tài)。*輸出一. WRITE 語句ABAP/4用來在屏幕上輸出資料的指令是WRITE指令,例如:WRITE: USER NAME IS:, SY-UNAME.二. 指定屏幕輸出位置指定輸出位置的語句格式
5、為:WRITE: AT / () 資料項 其中: / : 在下一行輸出: 指定輸出的行號;():指定輸出位數(shù)(長度): 指定顯示格式參數(shù),參數(shù)有:LEFT-JUSTIFIED 資料靠左對齊CENTERED 資料靠中間對齊RIGHT-JUSTIFIED 資料靠右對齊UNDER 正對在資料項的下面顯示NO-GAP 緊接著顯示,不留空格USING EDIT MASK : 使用內(nèi)嵌子元顯示, 如 12:03:20USING NO EDIT MASK: 不使用內(nèi)嵌子元NO-ZERO: 數(shù)字前面 0 的部分不顯示NO-SIGN: 不顯示正負(fù)號DECIMALS : 顯示 位小數(shù)EXPOENT : F(浮點數(shù)
6、)指數(shù)的值ROUND : 四舍五入至小數(shù)點后位CURRENCY : 幣別顯示DD/MM/YY : 日期顯示格式MM/DD/YY: YY/MM/DD: YY/DD/MMMM/DD/YYYY:DD/MM/YYYYYYYY/MM/DD:YYYY/DD/MM:例如1: WRITE: /10(6) ABCDEFGHIJK.輸出結(jié)果為: ABCDEF例如2: DATA: X TYPE I VALUE 11:20:30,A(5) TYPE C VALUE AB CDE.WRITE: / X USING EDIT MASK _:_:_.WRITE: / X USING EDIT MASK $_,_.WRITE
7、: / Y NO-GAP.輸出結(jié)果為:11:20:30$112,030ABCDEF例如3: DATA: LEN TYPE I VALUE 10,POS TYPE I VALUE 11,TEXT(10) VALUE 1234567890WRITE The text appears in the text.WRITE AT POS(LEN) TEXT.WRITE TO 語句的差不多 形式要將值(文 字)或源字 段內(nèi)容寫入 目標(biāo)字段, 能夠使用 WRITE TO 語句:語法WRITE TO .DATA: NUMBER TYPE F VALUE 4.3,TEXT(10),FLOAT TYPE F,PA
8、CK TYPE P DECIMALS 1.WRITE NUMBER.WRITE NUMBER TO TEXT EXPONENT 2.WRITE / TEXT.WRITE NUMBER TO FLOAT.WRITE / FLOAT.WRITE NUMBER TO PACK.WRITE / PACK.MOVE NUMBER TO PACK.WRITE / PACK.exp:DATA: NAME(10) VALUE SOURCE,SOURCE(10) VALUE Antony,TARGET(10).WRITE (NAME) TO TARGET.WRITE: TARGET.exp :DATA: COU
9、NTER TYPE I.COMPUTE COUNTER = COUNTER + 1.COUNTER = COUNTER + 1.ADD 1 TO COUNTER.在此,三條 運算語句進(jìn) 行相同算術(shù) 運算輸出屏幕上 的線和空行用下列語法 ,能夠在輸 出屏幕上生 成水平線:語法ULINE AT /().它等同于WRITE AT /() SY-ULINE.AT 后的格式規(guī) 范,與在 在屏幕上定 位 WRITE 輸出 (頁 28) 中為 WRITE 語句講明的 格式規(guī)范完 全一樣。假如沒有格 式規(guī)范,系 統(tǒng)則開始新 的一行,并 用水平線填 充該行。否 則,只按指 定輸出水平 線。生成水平線 的另一種方
10、 法,是在 WRITE 語句中鍵入 恰當(dāng)數(shù)量的 連字符,如 下所示:WRITE AT /() .垂直線用下列語法 ,能夠在輸 出屏幕上生 成垂直線:語法WRITE AT / SY-VLINE.或WRITE AT / |.空行用下列語法 ,能夠在輸 出屏幕上生 成空行:語法SKIP .該語句從當(dāng) 前行開始, 在輸出屏幕 上生成 個空行。如 果沒有指定 的值,就輸 出一個空行 。要將輸出定 位在屏幕的 指定行上, 請使用:語法SKIP TO LINE .該語句同意 將輸出位置 向上或向下 移動。四. 顯示圖示:語法: WRITE: AS SYMBOL.WRITE: AS ICON.例如: INCL
11、UDE .INCLUDE .WRITE: / Phone symbol:, SYM_PHONE AS SYMBOL.WRITE: / Alarm Icon:, ICON_VOICE_OUTPUT AS ICON.要查看系統(tǒng)所提供有那些符號及圖示,可選擇EDIT下的Insert Statement,選擇Write,接下來選擇要查看的群組,如SYMBOL 或ICON, 接下來按Display即可.*一. Internal Table 的宣告ABAP/4中的Internal Table是一種Data Structure,類似于其他語言中的STRUTURE,它能夠由幾個不同類型的欄位(field)組成
12、,用來表示具有不同屬性的某一事物,單獨一筆資料表示某個事物,多筆資料表示具有相同屬性的多個事物.Internal table 的定義有以下幾種格式:格式一. DATA: BEGIN OF OCCURS , TYPE , TYPE , TYPE , END OF .語法:DATA OCCURS WITH HEADER LINEExample:DATA VECTOR TYPE I OCCURS 10 WITH HEADER LINE.格式二. TYPES: BEGIN OF , TYPE , TYPE , TYPE , END OF .TYPES TYPE OCCURS .格式三. DATA: B
13、EGIN OF .INCLUDE STRUCTURE .DATA: END OF .DATA: LIKE OCCURS .exp:TYPES VECTOR TYPE I OCCURS 10.TYPES: BEGIN OF LINE,COLUMN1 TYPE I,COLUMN2 TYPE I,COLUMN3 TYPE I,END OF LINE.TYPES ITAB TYPE LINE OCCURS 10.TYPES: BEGIN OF DEEPLINE,TABLE1 TYPE VECTOR,TABLE2 TYPE ITAB,END OF DEEPLINE.TYPES DEEPTABLE TYP
14、E DEEPLINE OCCURS 10.本示例創(chuàng)建 與上例相同 的內(nèi)表數(shù)據(jù) 類型(VECTOR 和 ITAB) 。然后創(chuàng)建 數(shù)據(jù)類型 DEEPLINE 作為字段串 ,包含這些 內(nèi)表作為組 件。通過該 字段串,數(shù) 據(jù)類型 DEEPTABLE 被創(chuàng)建為內(nèi) 表。因此該 內(nèi)表的元素 本身確實是內(nèi) 表。exp :TYPES: BEGIN OF LINE,COLUMN1 TYPE I,COLUMN2 TYPE I,COLUMN3 TYPE I,END OF LINE.TYPES ITAB TYPE LINE OCCURS 10.DATA TAB1 TYPE ITAB.DATA TAB2 LIKE TAB
15、1 WITH HEADER LINE.同 創(chuàng)建內(nèi)表數(shù) 據(jù)類型 (頁 99) 中所示,該 示例創(chuàng)建數(shù) 據(jù)類型 ITAB 作為內(nèi)表。 通過使用 DATA 語句的 TYPE 參數(shù)引用 ITAB, 使數(shù)據(jù)對象 TAB1 與 ITAB 結(jié)構(gòu)相同。 通過使用 DATA 語句的 LIKE 參數(shù)引用 TAB1, 使數(shù)據(jù)對象 TAB2 結(jié)構(gòu)相同。 創(chuàng)建的 TAB2 帶表頭行。 因此,能夠 在程序中使 用 TAB2-COLUMN1、 TAB2-COLUMN2 和 TAB2-COLUMN3 等定位表格 工作區(qū)域 TAB2。exp :DATA FLIGHT_TAB LIKE SFLIGHT OCCURS 10.本示例
16、創(chuàng)建 數(shù)據(jù)對象 FLIGHT_TAB, 其結(jié)構(gòu)與數(shù) 據(jù)庫表格 SFLIGHT 相同。本示例介紹 如何采納兩 種不同的步 驟創(chuàng)建同一 內(nèi)表。TYPES VECTOR_TYPE TYPE I OCCURS 10.DATA VECTOR TYPE VECTOR_TYPE WITH HEADER LINE.在 此創(chuàng)建一 個內(nèi)表數(shù)據(jù) 類型 VECTOR_TYPE, 其行包含首 先創(chuàng)建的基 本類型 I 字段。然后 ,通過引用 VECTOR_TYPE 創(chuàng)建數(shù)據(jù)對 象 VECTOR。 通過使用 WITH HEADER LINE 選項還創(chuàng)建 表格工作區(qū) 域 VECTOR。 在這種情況 下,表格工 作區(qū)域包含 一
17、種類型 I 字段,能夠 通過名稱 VECTOR 定位。DATA VECTOR TYPE I OCCURS 10 WITH HEADER LINE.在這種情況 下,通過直 接在 DATA 語句中使用 OCCURS 選項創(chuàng)建完 全一樣的數(shù) 據(jù)類型 VECTOR。*1. TYPES type. 2. TYPES type(len).3. TYPES: BEGIN OF structype . END OF structype. 4. TYPES itabtype TYPE tabkind OF linetype LIKE tabkind OF lineobjWITH UNIQUE|NON-UNIQU
18、E keydef INITIAL SIZE n. 5. TYPES itabtype TYPE RANGE OF type.TYPES itabtype LIKE RANGE OF f. 6. TYPES itabtype TYPE linetype|LIKE lineobj OCCURS n. *APPEND LINE 格式:APPEND TO 舉例一:(使用WORK AREA)DATA : BEGIN OF LINE,COL1 TYPE I,COL2 TYPE I,END OF LINE.DATA ITAB LIKE LINE OCCURS 10.DO 2 TIMES.LINE-COL1
19、= SY-INDEX.LINE-COL2 = SY-INDEX * 2.APPEND LINE TO ITAB.ENDDO.LOOP AT ITAB INTO LINE.WRITE : / LINE-COL1,LINE-COL2.ENDLOOP.舉例二 (不使用WORK AREA)DATA : BEGIN OF ITAB OCCURS 10,COL1 TYPE I,COL2 TYPE I,END OF ITAB.DO 2 TIMES.ITAB-COL1 = SY-INDEX.ITAB-COL2 = SY-INDEX * 2.APPEND ITAB.ENDDO.LOOP AT ITAB.WRIT
20、E : / ITAB-COL1,ITAB-COL2.ENDLOOP.exp:DATA: BEGIN OF ITAB OCCURS 10,COL1 TYPE C,COL2 TYPE I,END OF ITAB.DO 3 TIMES.APPEND INITIAL LINE TO ITAB.ITAB-COL1 = SY-INDEX. ITAB-COL2 = SY-INDEX * 2.APPEND ITAB.ENDDO.LOOP AT ITAB.WRITE: / ITAB-COL1, ITAB-COL2.ENDLOOP.舉例三. (加入另一個Internal table的元素)格式: APPEND L
21、INES OF FROM TO TO .將的元素加入至中,可選取自至的范圍.APPEND LINES OF ITAB TO JTAB.COLLECT LINECOLLECT 指令也是將元素加入Internal table中,與APPEND 的區(qū)別是: COLLECT指令在非數(shù)值欄位相同的情況下,將數(shù)值欄位匯總.格式: COLLECT INTO DATA: BEGIN OF ITAB OCCURS 3,COL1(3) TYPE C,COL2 TYPE I,END OF ITAB.ITAB-COL1 = ABC. ITAB-COL2 = 10.COLLECT ITAB.ITAB-COL1 = XY
22、Z. ITAB-COL2 = 20.COLLECT ITAB.ITAB-COL1 = ABC. ITAB-COL2 = 80.COLLECT ITAB.此時, internal table中放的是2筆數(shù)據(jù), 分別為:ITAB-COL1 ITAB-COL2ABC 90XYZ 20*INSERT LINE將元素插入在指定的internal table位置之前.格式: INSERT INTO INITIAL LINE INTO INDEX 或者: INSERT LINES OF FROM TO INTO INDEX 其中: 即work area,工作區(qū)中的元素.INITIAL LINE INTO :
23、插入一筆初始化的記錄.: internal tableINDEX : internal table 的記錄號.(新加入的元素放在此記錄前面)Example:DATA: BEGIN OF LINE,COL1 TYPE I,COL2 TYPE I,END OF LINE.DATA ITAB LIKE LINE OCCURS 10.DO 3 TIMES.LINE-COL1 = SY-INDEX *10.LINE-COL2 = SY-INDEX *20.APPEND LINE INTO ITAB.ENDDO.LINE-COL1=100.LINE-COL2=200.INSERT LINE INTO IT
24、AB INDEX 2. 插入在位置2之前LOOP AT ITAB INTO LINE.WRITE: / SY-TABIX,LINE-COL1,LINE-COL2. SY-TABIX為Table位置ENDLOOP. 執(zhí)行結(jié)果:1 10 202 100 200 插入的元素3 20 404 30 60插入另一Internal Table元素語法:INSERT LINES OF FROM TO TO INDEX 將的元素插入至中, 位置在 之前, 可選取自至的範(fàn)圍Example:APPEND LINES OF ITAB TO JTAB INDEX 3.將ITAB所有元素插入JTAB中, 位置在第三個元
25、素之前*讀取internal table格式一: LOOP AT INTO FROM TO WHERE ENDLOOP.Example:LOOP AT ITAB INTO LINE WHERE COL1 100.WRITE: / SY-TABIX,LINE-COL1.ENDLOOP.僅讀取 COL1 100 的元素格式二:READ TABLE INTO INDEX / WITH KEY 舉例. (格式二)DATA: BEGIN OF ITAB OCCURS 10,COL1 TYPE I,COL2 TYPE I,END OF ITAB.DO 10 TIMES.ITAB-COL1 = SY-IND
26、EX.ITAB-COL2 = SY-INDEX * 2.APPEND ITAB.ENDDO.READ TABLE ITAB INDEX 3.(或者: READ TABLE ITAB WITH KEY COL1 = 3.)WRITE: / ITAB-COL1 = , ITAB-COL1, ITAB-COL2 = , ITAB-COL2.執(zhí)行結(jié)果同樣是: ITAB-COL1 = 3ITAB-COL2 = 6.Example:READ TABLE ITAB INTO LINE INDEX 5讀取 ITAB的第5個元素資料, 放入 LINE的欄位中根據(jù)欄位內(nèi)容尋找語法:READ TABLE INTO
27、Example:ITAB-COL1 = ABC.READ TABLE ITAB INTO LINE.找出ITAB 中 COL1 欄位內(nèi)容是 ABC 的元素, 找到的值放入 LINE 中若找到 SY-SUBRC傳回0, 找不到則傳回 4, 必須宣告有 work area*修改internal table 中的值格式: MODIFY FROM INDEX TRANSPORTING WHERE 舉例一. READ TABLE ITAB INDEX 3.LINE-COL1 = 29.MODIFY ITAB FROM LINE TRANSPORTING COL1.將第三筆記錄的COL1欄位的值修改為29
28、.舉例二. T_SALARY - salary = 50.MODIFY T_SALARY TRANSPORTING salary WHERE birthday = 1999/12/06.DELETE internal table中的欄位格式: DELETE INDEX .或: DELETE FROM TO WHERE Internal table 排序 SORT BY 其中: 有DESCENDING 和ASCENDING, Default 為ASCENDING.: 為指定排序的欄位.Example: SORT ITAB DESCENDING BY COL2.將 ITAB 根據(jù) COL2欄位遞減
29、排序*確定內(nèi)表屬 性假如在處理 過程中想知 道內(nèi)表一共 包含多少行 ,或者想知 道定義的 OCCURS 參數(shù)的大小 ,請使用 DESCRIBE 語句,用法 如下:語法DESCRIBE TABLE LINES OCCURS .假如使用 LINES 參數(shù),則將 填充行的數(shù) 量寫入變量 。 假如使用 OCCURS 參數(shù),則將 行的初始號 寫入變量 。DATA: BEGIN OF LINE,COL1 TYPE I,COL2 TYPE I,END OF LINE.DATA ITAB LIKE LINE OCCURS 10.DATA: LIN TYPE I, OCC TYPE I.DESCRIBE TAB
30、LE ITAB LINES LIN OCCURS OCC.WRITE: / LIN, OCC.DO 1000 TIMES.LINE-COL1 = SY-INDEX.LINE-COL2 = SY-INDEX * 2.APPEND LINE TO ITAB.ENDDO.DESCRIBE TABLE ITAB LINES LIN OCCURS OCC.WRITE: / LIN, OCC.其輸出為:0 101.000 10在此創(chuàng)建內(nèi) 表 ITAB。 在填充表格 前后執(zhí)行 DESCRIBE 語句。更改 當(dāng)前行號, 但無法更改 初始行號。*加總SUM.總和計算存放與work area中,但只能在LOOP
31、中使用.例: LOOP AT ITAB INTO LINE.SUM.ENDLOOP.WRITE: / LINE-COL1, LINE-COL2.LINE-COL1 和 LINE-COL2 存數(shù)值總和初始化internal tableREFRESH . 清空中的值.使用在沒有 HEADER LINE 的 Internal Table中, 清除所有元素CLEAR . 清空的Header Line.使用在有 HEADER LINE 的 Internal Table中, 清除所有元素FREE . 釋放記憶體空間.釋放(Release) Internal Table所佔的記憶體空間, 用在 REFRES
32、H和 CLEAR指令之後將值重置為 默認(rèn)值能夠用 CLEAR 語句重置任 何數(shù)據(jù)對象 值,如下所 示:語法CLEAR .exp:DATA NUMBER TYPE I VALUE 10.WRITE NUMBER.CLEAR NUMBER.WRITE / NUMBER.輸出為:100CLEAR 語句將字段 NUMBER 的內(nèi)容從10 重置為默認(rèn) 值 0。*添加字段 順序并將結(jié) 果賦給另一 個字段語法ADD THEN UNTIL GIVING .假如 、 、 . 、 是在內(nèi)存中 相同類型和 長度的等距 字段序列, 則進(jìn)行求和 計算并將結(jié) 果賦給 添加字段 順序并將結(jié) 果添加到另 一個字段的 內(nèi)容中語
33、法ADD THEN UNTIL TO .該語句除了 將字段總和 添加到 的舊內(nèi)容中 之外,與上 面語句的工 作方式相同 。有關(guān)其它相 似變體的信 息,參見有 關(guān) ADD 語句的關(guān)鍵 字文檔。DATA: BEGIN OF SERIES,N1 TYPE I VALUE 10,N2 TYPE I VALUE 20,N3 TYPE I VALUE 30,N4 TYPE I VALUE 40,N5 TYPE I VALUE 50,N6 TYPE I VALUE 60,END OF SERIES.DATA SUM TYPE I.ADD SERIES-N1 THEN SERIES-N2 UNTIL SERI
34、ES-N5 GIVING SUM.WRITE SUM.ADD SERIES-N2 THEN SERIES-N3 UNTIL SERIES-N6 TO SUM.WRITE / SUM.輸出如下:150350在此,將 N1 到 N5 組件內(nèi)容求 和并將其值 賦給字段 SUM。然 后,將 N2 到 N6組件求 和并將其添 加到 SUM 的值中。*屏幕輸入命令在ABAP/4中要從螢?zāi)惠斎胱兞? 使用的命令是 PARAMETERS 及SELECTION-OPTIONS: 1. PARAMETER: 輸入一個變量或欄位內(nèi)容2. SELECTION-OPTIONS: 使用條件篩選畫面來輸入數(shù)據(jù) PARAME
35、TERS 指令差不多的輸入命令, 類似如BASIC的INPUT命令, 但無法使用F格式(浮點數(shù))語法:PARAMETERS DEFAULT LOWER CASEOBLIGATORY AS CHECKBOXRADIOBUTTON GROUP Example:PARAMETERS: NAME(8),AGE TYPE I,BIRTH TYPE D.執(zhí)行結(jié)果: 在日期的輸入格式上為 MM/DD/YY , MM/DD/YYYY, MMDDYY或MMDDYYYY , 如輸入 020165表 1965年02月01日, 與02/01/65的輸入是一樣的, 日期輸入範(fàn)圍為西元1950年至2049年1. DEFA
36、ULT 設(shè)定輸入的預(yù)設(shè)值Example:PARAMETERS: COMPANY(20) DEFAULT DELTA,BIRTH TYPE D DEFAULT 19650201.2. LOWER CASEABAP/4預(yù)設(shè)是將字串輸入值自動轉(zhuǎn)換為大寫, 加上此參數(shù)會將輸入的資料轉(zhuǎn)成小寫, 3. OBLIGATORY強制要求輸入, 螢?zāi)簧蠒霈F(xiàn)一個 ? , 使用者必須要輸入才可.4. AS CHECKBOX輸入 CHECKBOX的格式Example:PARAMETERS: TAX AS CHECKBOX DEFAULT X,NTD AS CHECKBOX.執(zhí)行結(jié)果:5. RADIOBUTTON GR
37、OUP 輸入 RADIO BUTTON GROUP 的方式Example:PARAMETERS: BOY RADIOBUTTON GROUP SEX DEFAULT X, GIRL RADIOBUTTON GROUP SEX.exp :TABLES SPLFI.PARAMETERS: LOW LIKE SPFLI-CARRID, HIGH LIKE SPFLI-CARRID.SELECT * FROM SPLFI WHERE CARRID BETWEEN LOW AND HIGH.ENDSELECT.*SELECTION-OPTIONSSELECTION-OPTIONS所輸入的值實際上是放在i
38、nternal table中的,該Internal table 有四個欄位,分別是:SIGN,OPTION,LOW,HIGH. 條件篩選檢查條件輸入畫面指令, 輸入條件後可配合SELECT指令自TABLE讀取符合條件的資料, 直接執(zhí)行或放入 Internal Table中, 條件有四個參數(shù):1. SIGN: I: 表篩選條件符合的資料E: 表篩選條件不符合的資料2. OPTION: 比較的條件符號EQ(等於),NE(不等於),GT(大於),LE(小於),CP(包含),NP(不包含)3. LOW: 最小值4. HIGH: 最大值語法:SELECTION-OPTIONS FOR Example:T
39、ABLES SPFLI.SELECT-OPTIONS AIRLINE FOR SPFLI-CONNID.將條件的輸入值存放入 AIRLINE, 篩選選擇為SPFLI中的CONNID欄位改變條件輸入格式1. DEFAULT TO 設(shè)定開始結(jié)束範(fàn)圍輸入預(yù)設(shè)值Example:SELECT-OPTIONS AIRLINE FOR SPFLI-CONNID DEFAULT 2042 TO 4555.2. NO-EXTENSION設(shè)定不要Multi-Option輸入畫面3. NO INTERVALS設(shè)定不要區(qū)間範(fàn)圍輸入畫面4. LOWER CASE輸入轉(zhuǎn)換成大寫5. OBLIGATORY強制要求輸入*配合
40、 SELECT 命令條件輸入完後要將符合條件的資料篩選出來, 可配合使用 SELECT 指令1.使用WHERE Example:TABLES SPFLI.SELECT-OPTIONS AIRLINE FOR SPFLI-CONNID.SELECT * FROM SPFLI WHERE CONNID IN AIRLINE.WRITE: / SPFLI-CONNID,SPFLI-CITYFROM,SPFLI-CITYTO.ENDSELECT.2.使用CHECK參數(shù)Example:TABLES SPFLI.SELECT-OPTIONS AIRLINE FOR SPFLI-CONNID.SELECT
41、* FROM SPFLI.CHECK AIRLINE.WRITE: / SPFLI-CONNID,SPFLI-CITYFROM,SPFLI-CITYTO.ENDSELECT.*exp: TABLES SPFLI.SELECT-OPTIONS: S_CARRID FOR SPFLI-CARRID,S_CITYFR FOR SPFLI-CITYFROM,S_CITYTO FOR SPFLI-CITYTO,S_CONNID FOR SPFLI-CONNID.SELECT * FROM SPFLI.CHECK: SPFLI-CARRID IN S_CARRID,SPFLI-CITYFR IN S_CI
42、TYFR,SPFLI-CITYTO IN S_CITYTO,SPFLI-CONNID IN S_CONNID.WRITE: / SPFLI-CARRID, SPFLI-CONNID, SPFLI-CITYFROM, SPFLI-CITYTO.ENDSELECT.3.使用 IF IN 敘述Example:SELECT-OPTIONS AIRLINE FOR SPFLI-CONNID.SELECT * FROM SPFLI.IF SPFLI-CONNID IN AIRLINE.WRITE: / SPFLI-CONNID,SPFLI-CITYFROM,SPFLI-CITYTO.ENDIF.ENDSE
43、LECT.*SELECTION-SCREEN 1.產(chǎn)生空白列語法:SELECTION-SCREEN SKIP Example:SELECTION-SCREEN SKIP 2.產(chǎn)生兩列空白列2.產(chǎn)生底線語法:SELECTION-SCREEN ULINE / (length)Example:SELECTION-SCREEN ULINE /10(30).自第10格開始產(chǎn)生長度30的底線3.印出備註說明語法: SELECTION-SCREEN COMMENT / (length) Example:REMARK = Pls enter your name.SELECTION-SCREEN COMMENT
44、 /10(30) REMARK.4. 同一列中輸入數(shù)個資料項語法:SELECTION-SCREEN BEGIN OF LINE.SELECTION-SCREEN END OF LINE.Example:SELECTION-SCREEN BEGIN OF LINE.SELECTION-SCREEN POSITION 20.PARAMETERS NAME(10).SELECTION-SCREEN POSITION 40.PARAMETERS BIRTH TYPE D.SELECTION-SCREEN END OF LINE.在20格輸入NAME內(nèi)容, 40格輸入 BIRTH的內(nèi)容5. 繪出BLOC
45、K PANEL語法:SELECTION-SCREEN BEGIN OF BLOCK WITH FRAME TITLE .SELECTION-SCREEN END OF BLOCK .Example:SELECTION-SCREEN BEGIN OF BLOCK RADIO WITH FRAME .PARAMETER R1 RADIOBUTTON GROUP GR1.PARAMETER R2 RADIOBUTTON GROUP GR1.PARAMETER R3 RADIOBUTTON GROUP GR1.SELECTION-SCREEN END OF BLOCK RADIO. *SQL語法我們在
46、編寫ABAP4程式的時候,經(jīng)常需要從TABLE中依照某些條件讀取數(shù)據(jù),.讀取數(shù)據(jù)最常用的方法確實是通過SQL語法實現(xiàn)的.ABAP/4 中能夠利用SQL語法創(chuàng)建或讀取TABLE,SQL語法分為DDL(DATA DEFINE LANGUAGE)語言和DML(DATA MULTIPULATION LANGUAGE)語言,DDL語言是指數(shù)據(jù)定義語言,例如CREATE等, DML語言是數(shù)據(jù)操作語言,例如SELECT, INSERT等語句. SQL語句有OPEN SQL語句和NATIVE SQL語句. OPEN SQL語句不是標(biāo)準(zhǔn)SQL語句,是ABAP/4語言,利用OPEN SQL語句能在Database
47、s 和 Command 之間產(chǎn)生一個BUFFER,因此它有一個語言轉(zhuǎn)換的過程.而NATIVE SQL語句則是標(biāo)準(zhǔn)的SQL語句, 它直接針對Databases操作.OPEN SQLSELECT語句語法格式:SELECT INTO FROM WHERE GROUP BY ORDER BY 其中: 指定要抓取的欄位將讀取的記錄存放在work area中指定從那個TABLE中讀取資料抓取資料的條件指定按那些欄位分組排序的欄位及方式相關(guān)的系統(tǒng)變量:SY-SUBRC = 0 表示讀取數(shù)據(jù)成功 0 表示未找到符合條件的記錄SY-DBLNT: 被處理過的記錄的筆數(shù).相關(guān)的命令:EXIT. 退出循環(huán).CHECK
48、 .假如邏輯表達(dá)式成立,則繼續(xù)執(zhí)行,否則,開始下一次循環(huán).利用循環(huán)方式讀取所有記錄SELECT .ENDSELECT.是循環(huán)方式讀取記錄的.例如:TABLES MARD.SELECT DISTINCT * FROM MARD WHERE MATNR = 3520421700.ENDSELECT.(從MARD中抓取所有料號=3520421700的資料)讀取一筆資料Example:TABLES SPFLI.SELECT SINGLE * FROM SPFLI WHERE PLANT =CHUNGLI AND TEL=4526174.WRITE: / SPFLI-COMPANY,SPFLI-PLAN
49、T,SPFLI-TEL.將讀取的記錄放在work area中,同時加入Internal table 中.格式有:. INTO . INTO CORRESPONDING FIELDS OF . INTO (f1, ., fn) 變量組. INTO TABLE . INTO CORRESPONDING FIELDS OF TABLE . APPENDING TABLE . APPENDING CORRESPONDING FIELDS OF TABLE 舉例一:TABLES MARD. DATA: BEGIN OF ITAB OCCURS 10,MATNR LIKE MARD-MATNR,WERKS
50、 LIKE MARD-WERKS,LGORT LIKE MARD-LGORT,LABST LIKE MARD-LABST,END OF ITAB.SELECT MATNR WERKS LGORT LABST INTO CORRESPONDING FIELDS OF ITAB FROM MARDWHERE MATNR = 3520421700.APPEND ITAB.CLEAR ITAB.ENDSELECT.(將讀取的結(jié)果放在Internal table ITAB中)DATA: BEGIN OF WA, LINE(240),END OF WA.DATA NAME(10).NAME = SPFLI
51、.SELECT * FROM (NAME) INTO WA.WRITE: / WA-LINE. ENDSELECT.數(shù)據(jù)庫表名 稱 SPFLI 被賦給字符 字段 NAME。 SELECT 語句將所有 的行從 SPFLI 中讀到目標(biāo) 區(qū) WA 中。在該示 例中,WA 與 SPFLI 的結(jié)構(gòu)并不 相同,每一 行都將自動 地轉(zhuǎn)換成字 符字段.舉例二.TABLES MARD.SELECT MATNR MTART MAKTX INTO (t_matnr, t_mtart, maktx) FROM MARDWHERE MATNR = 3520421700.ENDSELECT.(從MARD中抓取料號=352
52、0421700的料號、類型和描述,放在變量t_matnr, t_mtart, maktx中)。Example:TABLES SPFLI.DATA WA LIKE TABLES.SELECT * FROM SPFLI INTO WA.WRITE: / WA-COMPANY,WA-PLANT.ENDSELECT.逐筆寫入WA 工作區(qū)中舉例三.將讀取的資料寫入 Initial Table 中語法:SELECT . INTO TABLE Example:TABLES SPFLI.DATA ITAB LIKE SPFLI OCCURS 10 WITH HEADER LINE.SELECT * FROM
53、SPFLI INTO ITAB.一次讀10筆(Initial Table的長度)記錄存入 ITAB 中SELECT . INTO TABLE PACKAGE SIZE 一次讀取 筆記錄至 中Example:TABLES SPFLI.DATA ITAB LIKE SPFLI OCCURS 10 WITH HEADER LINE.SELECT * FROM SPFLI INTO ITAB PACKAGE SIZE 5. 一次讀取 5 筆記錄exp :TABLES SPFLI.DATA: BEGIN OF WA,NUMBER TYPE I VALUE 1,CITYFROM LIKE SPFLI-CI
54、TYFROM,CITYTO LIKE SPFLI-CITYTO,END OF WA.SELECT * FROM SPFLI INTO CORRESPONDING FIELDS OF WA.WRITE: / WA-NUMBER, WA-CITYFROM, WA-CITYTO.ENDSELECT.輸出如下所 示:在該示例中 ,系統(tǒng)只將 數(shù)據(jù)庫表 SPFLI 中選定行的 列 CITYFROM 和 CITYTO 傳送到 WA 中。WA 中的組件 NUMBER 保持不變。*按指定的欄位排序TABLES SBOOK.SELECT * FROM SBOOK WHERE CARRID = LH ANDCONN
55、ID = 0400 ANDFLDATE = 19950228ORDER BY BOOKID ASCENDING.WRITE: / SBOOK-BOOKID, SBOOK-CUSTOMID,SBOOK-CUSTTYPE, SBOOK-SMOKER,SBOOK-LUGGWEIGHT, SBOOK-WUNIT,SBOOK-INVOICE.ENDSELECT.(利用參數(shù)ORDER BY所指定的欄位排序)* 抓取數(shù)據(jù)的條件敘述(1) BETWEEN AND 例如: WHERE YEAR BETWEEN 1995 AND 2000.(2) LIKE 例如: WHERE NAME LIKE MIKE%.(%
56、是通配符號)(3) IN ()是里面的任意一個值即可.例如: WHERE PLANT IN (CHUNGLI, TAOYUAN,LIUTU).(表示PLANT 只要是CHUNGLI或TAOYUAN或LIUTU都能夠).(4) ORDER BY 敘述指定排序的欄位或順序(1). .ORDER BY PRIMARY KEY.根據(jù) PRIMARY KEY 遞增排序(2)ORDER BY DESCENDING DESCENDINGExample:SELECT * FROM IM ORDER BY PART .*INSERT 語句從work area 加入到Internal Table中格式: INSE
57、RT INTO VALUES 例如: DATA: BEGIN OF WA,CODE(6) TYPE C,NAME(30) TYPE C,END OF WA.DATA: VEN LIKE WA OCCURS 10.WA-CODE = 530120.WA-NAME = XINGDA ELECTRONICS CO.,LTD.INSERT INTO VEN VALUES WA .假如work area的名稱確實是internal table的名稱,能夠直接寫成:INSERT 例如:DATA: BEGIN OF WA OCCURS 10,CODE(6) TYPE C,NAME(30) TYPE C,EN
58、D OF WA.WA-CODE = 530120.WA-NAME = XINGDA ELECTRONICS CO., LTD.INSERT WA.從另外一個Internal table中INSERT 資料格式:INSERT FROM TABLE ACCEPTING DUPLICATE KEY將中非NULL的資料加入中,加上ACCEPTING DUPLICATE KEY能限制相同PRIMARY KEY不重復(fù)加入.加入一筆記錄至資料庫1.自 Work Area 工作區(qū)語法:INSERT INTO VALUES Example:TABLES SPFLI.DATA WA LIKE SPFLI.WA-N
59、O = 34051920.WA-COMPANY=DELTA.INSERT SPFLI VALUES WA.將 ITAB 資料加入 SPFLI中, 也可寫成 INSERT SPFLI FROM ITAB.SPFLI-NO=34299876.SPFLI-COMPANY=HP.INSERT SPFLI FROM SPFLI.將Work Area SPFLI中的資料加入資料庫檔案 SPFLI中因Work Area SPFLI的結(jié)構(gòu)與資料檔 SPFLI一樣, 因此也可寫成 INSERT SPFLI.2.自 Internal Table語法:INSERT FROM TABLE ACCEPTING DUPL
60、ICATE KEY將 中非 NULL的資料加入 中, 加上 ACCEPTING DUPLICATEKEY能檢查不加入有重覆primary key, 若有重覆則 SY-SUBRC 會傳回 4Example:TABLES SPFLI.DATA ITAB LIKE SPFLI OCCURS 10 WITH HEADER LINE.ITAB-NO = 34051920.ITAB-COMPANY = DELTA.APPEND ITAB.INSERT SPFLI FROM TABLE ITAB ACCEPTING DUPLICATE KEY.*UPDATE 指令異動已存在的記錄內(nèi)容1.使用 Primary
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2030年中國多肽藥物行業(yè)發(fā)展環(huán)境分析及投資戰(zhàn)略研究報告
- 2024-2030年中國地坪行業(yè)發(fā)展態(tài)勢與投資建議分析報告
- 小學(xué)班主任工作考核方案
- 2024年環(huán)保節(jié)能廠房分租服務(wù)合同模板下載3篇
- 2024年版:數(shù)字音樂版權(quán)許可合同(許可范圍、使用方式及許可費用)
- 2024年區(qū)二手房買賣交易安全協(xié)議范本2篇
- 2024年生態(tài)旅游度假區(qū)開發(fā)與運營合同
- 馬鞍山師范高等專科學(xué)?!缎律鷮I(yè)導(dǎo)讀課程》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年度財富傳承代客理財專項協(xié)議3篇
- 2025電腦銷售合同樣本
- 民辦學(xué)校教職工入職背景審查制度
- 2024年新人教版四年級數(shù)學(xué)上冊《教材練習(xí)21練習(xí)二十一(附答案)》教學(xué)課件
- 2024年湛江市農(nóng)業(yè)發(fā)展集團(tuán)有限公司招聘筆試沖刺題(帶答案解析)
- 商業(yè)倫理與社會責(zé)任智慧樹知到期末考試答案2024年
- MOOC 創(chuàng)新思維與創(chuàng)業(yè)實驗-東南大學(xué) 中國大學(xué)慕課答案
- 二級公立醫(yī)院績效考核三級手術(shù)目錄(2020版)
- 6人小品《沒有學(xué)習(xí)的人不傷心》臺詞完整版
- GB/T 16865-1997變形鋁、鎂及其合金加工制品拉伸試驗用試樣
- 自閉癥兒童行為檢核表學(xué)前版
- 五年級上冊數(shù)學(xué)專項練習(xí)高的畫法 全國通用
- 民警個人季度小結(jié)范文(3篇)
評論
0/150
提交評論