APAP4基本语法参考
更新时间:2024-04-09 14:48:01 阅读量: 综合文库 文档下载
- 阿帕帕推荐度:
- 相关推荐
1. ABAP/4 Introduction
?Introduction
ABAP/4(Advanced Business Application Programming)是SAP/R3目前唯一的系統發展工具, 屬 4GL, 語法比較近似Visual Basic或JAVA, 和傳統third-generation 語言, 如C,PASCAL 有很大不同, 在程式模組(Program Structure Module)可分以 下三個部分:
1.Sequential coding within processing block
與一般語言語法近似, 如IF,WHILE等, 但並沒有GOTO敘述
2.Reports
呼叫一個獨立的事件(Depending Event), 讀取database 產生資料列表
3.Dialog
螢幕參數輸入的對話框, 專門處理database 讀取或異動的tranaction process
?Basic Languange Overview
1.data element 宣告方式, 如數值, 字元資料變數宣告 2.運算元(operate)使用, 如 + - * / 3.Control element使用, 如Boolean 值 4.特殊資料格式, 如日期與時間
5.字串字料處理function, 如部分字串的截取 6.副程式或自定函數的呼叫 7.SQL語法使用
8.資料結構的使用, 如process internal table的宣告與使用
?Reports Overview
1.Reports Task, 如報表螢幕預覽或印表機列印的選擇 2.Reports 模組是一個Stand-along 程式,
3.database讀取方式, 如可定義logical database(與磁碟的physical storage對映) 4.報表資料的計算與產生 5.報表的輸出
?Dialog Overview
1.專處理database 的讀取與異動, 如使用SQL 指令
2.Dialog 不是一個Stand-Along Progarm, 使用transaction code來產生螢幕對話框 3.由flow logic 控制, flow logic分成PBO(Process Before Output)與PAI(Process After Input)
1
2.Begin To Programming
2.1 ABAP/4 Editor
?Creating ABAP/4 Program
使用ABAP Workbench撰寫程式(Choose Tools->ABAP/4 Workbench, Transaction Code: S001), 螢 幕如下:
可分成:
1.ABAP/4 Editor :針對簡單的報表或程式, 僅使用幾個元件或不使用 2.Obiect Browser :針對複雜的報表或程式, 如Dialog Transaction Module 撰寫
?使用ABAP/4 Editor 撰寫程式
1.ABAP/4 Editor 畫面如下(Transaction Code:SE38):
2
2.輸入程式名稱, 如果是新程式, 按下”Create”, 如果修改已存在程式, 則按下”Change”或F6鍵 在命名規則上, Reports程式為 Yaxxxxxx或Zaxxxxxx, a表application module簡稱, 如s表SD Dialog程式為SAPMYxxx或SAPMZxxx
3.輸入程式Attribute
(1).Title:程式描述或功能說明
(2).Type:Execute mode: 1: Stand-along Program 如Reports I: Include Program M: Module Pool F: Function Group S: Subroutine Pool
(3).Status:Program development status: P: SAP standard production program K: Customer production program S: System program T: Test program
(4).Application: 程式所屬的application module, 如F表 Financeial acounting
(5).Development class: 用於同一系統中各個program, 如果不屬任一class, 可使用$TMP
3
4.撰寫Source Code
Program 之後接的是程式名稱, Write 是顯示的意思, 會將所接的字串在螢幕上顯示, 注意每一 行最後要有一個 . (點), 表示敘述的結束, 儲存後回ABAP/4 Editor畫面
5. 執行程式
按”Execute”或F8鍵, 螢幕可見執行所得的結果
?重要的編輯鍵 key F8 F5 F11 CTRL+F11 Function 執行程式 複製游標所在列的內容 儲存檔案 刪除游標所在列
4
2.2 ABAP/4 Data Element
?Data Type
ABAP/4 的資料型態可分成:
Type Length Range Initial Value Description
C 1 1-65535Byte Space 字串資料, 如?Program? D 8 8Byte ?00000000? 日期資料, 格式為YYYYMMDD F 8 8Byte 0 浮點數 I 4 -2^31至2^31-1 0 整數
N 1 1-65535Byte ?00…0? 數值所組成的字串 P 8 1-16Byte 0 Packed 數, 用在小數點數 T 6 6Byte ?000000? 時間資料, 格式為HHMMSS X 1 1-65535Byte X?00? 16進位數
?變數宣告
變數宣告包含 name, type, length 和 structure四個部分, 使用 DATA 指令, 如
DATA: S1 TYPE I, SUM TYPE I.
?常數宣告
常數宣告使用 CONSTANTS 指令, 如宣告 PI 是一個小數點5位的值 3.14159,
CONSTANTS PI TYPE P DECIMALS 5 VALUE ?3.14159?.
?系統所定義資料
這是由系統所定義的專有名辭, 如 SPACE 空白字串
SY-SUBRC 系統執行傳回值, 0 表示成功 SY-UNAME logon 帳號 SY-DATUM 系統日期 SY-UZEIT 系統時間
SY-TCODE 目前的transaction code
5
?TYPE 敘述
用來指定資料型態或宣告自定資料型態 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 用在已有值的資料項, 如系統變數, 而TYPE敘述則是用 在指定資料型態。
?DATA 敘述
語法:
DATA
Example:
DATA: COUNTER TYPE P VALUE 1, FLAG TYPE C VALUE IS INITIAL,
WEIGHT TYPE P DECIMALS 2 VALUE ?1.25?.
欄位變數的宣告:
DATA: BEGIN OF ADDRESS, NAME(10) TYPE C , NUMBER TYPE P, END OF ADDRESS.
使用時用欄位變數加上元件名稱, 如 ADDRESS-NAME
6
?CONSTANTS 敘述
用來宣告常數 語法:
CONSTANTS
Example:
CONSTANTS: CNAME(10) VALUE ?周慶日?,
BIRTH_DAY TYPE D VALUE ?19650201?.
?STATICS 敘述
宣告的變數僅在目前的程式中使用, 結束後會自動釋放 語法:
STATICS
?TABLES 敘述
用來宣告 Table Work Area 的資料, 對映至 ABAP/4 資料檔(Dictionary Object), 由SQL 指令載入所需資料 語法:
TABLES
Example:
TABLES: SPFL.
SELECT * FROM SPFL.
WRITE: SPFL-MANDT, SPFL-CARRID,SPFL-CONNECTION. ENDSELECT.
從ABAP/4 Dictionary 的 SPFL 檔載入MANDT,CARRID,CONNECTION三個欄位至 SPFL 此Table Work Area
7
2.3 Outputting Data to Screen
?Write 敘述
ABAP/4 用來在螢幕上輸出資料的指令是 Write 指令
語法:
Write 資料項
資料項可以是常數或變數, 如: WRITE ?This is sample?.
WRITE: ?COMPANY:?,STFL-CARRID.
?指定螢幕位置顯示
語法:
Write AT [/] [
Example:
WRITE ?First Line ?. WRITE / 6 ?Second Line?. 輸出結果:
First Line Second Line
DATA: NUMBER TYPE I VALUE ?1234567890?. TEXT(10) VALUE ?ABCDEFGHIJ?. WRITE: (5) NUMBER, /(6) TEXT. 輸出結果: *7890 ABCDEF
?指定顯示格式
語法:
WRITE 資料項 <顯示格式參數> 顯示格式參數:
LEFT-JUSTIFIED 資料靠左顯示
8
CENTERED 資料靠中間顯示 RIGHT-JUSTIFIED 資料靠右顯示
UNDER
USING EDIT MASK
NO-ZERO 數字前面0 的部分不顯示 NO-SIGN 不顯示正負號 DECIMALS
DATA: X TYPE I VALUE ?112030?, A(5) VALUE ?ABCDE?.
WRITE X USING EDIT MASK ?__:__:__?. 輸出結果為 11:20:30
WRITE X USING EDIT MASK ?$___,___? 輸出結果為 $112,030
?產生空白列 產生 n 個空白列
語法:
SKIP [
WRITE ?PASS1?. SKIP.
WRITE ?PASS2?.
9
輸出結果為: PASS1
PASS2
?顯示圖示
可以顯示R/3 系統所提供的符號或圖示 語法:
WRITE
INCLUDE
WRITE: / ?Phone Symbol:? , SYM_PHONE AS SYMBOL. WRITE: / ?Alarm Icon:? , ICON_ALARM AS ICON. 執行結果:
要查看系統所提供有那些符號及圖示, 可選擇 “Edit” 下的 “Insert Statement”, 選擇 “WRITE”
接下來選擇要查的群組, 如SYMBOL 或 ICON, 按下 “Display” 即可.
?跳至指定列座標
將座標跳至指定的Y軸列座標 語法:
SKIP TO LINE [
Example:
SKIP TO LINE 5. WRITE ?PASS1?.
10
?顯示 CHECK BOX 資料
以字串資料內容的第一個字元為 CHECK BOX的輸出, 如果是空白, CHECK BOX 顯示 為空白, 相反則顯示 X , 可用在邏輯判斷檢查 語法:
WRITE <資料項> AS CHECKBOX.
Example:
DATA: FLAG1 VALUE ? ? . FLAG2 VALUE ?X?.
WRITE: / ?CHECK FLAG 1:? , FLAG1 AS WRITE: / ?CHECK FLAG 2:? , FLAG2 AS 執行結果:
11
CHECKBOX. CHECKBOX. 2.4 Processing Data
?Assign Value
語法:
MOVE
將F1的值存至變數 F2 中, 也可寫成 F2 = F1 Example:
M_NAME = ?CHER?.
?使用 Offset
語法:
MOVE
DATA: F1(10) VALUE ?ABCDEFGHIJ?. F2(5).
F2 = F1+3(5). “自第4個位置開始取出5個字元 F2 的內容會變成 DEFGH
?Field String 元件的複製
語法:
MOVE –CORRESPONDING
將Strings1中的field元件的資料複製至String2中, 僅複製相同名稱的元件 Example:
DATA: BEGIN OF ADDRESS,
FIRSTNAME(10) VALUE ?LULU?, LASTNAME(10) VALUE ?CHOU?, TEL(12) VALUE ?4660570?, END OF ADDRESS. DATA:BEGIN OF NAME, FIRSTNAME(10), LASTNAME(10), E_MAIL(30), END OF NAME.
MOVE-CORRESPONDING ADDRESS TO NAME.
NAME-FIRSTNAME 變成 ?LULU?, NAME-LASTNAME 變成 ?CHOU?,
12
而 NAME-E_MAIL 則不變
?變數 CALL BY VALUE 的使用
在變數的使用上, 可以使用類似Call By Value 的方法 語法:
WRITE (
DATA: NAME(20) VALUE ?SOURCE?, SOURCE(10) VALUE ?LILY?, TARGET(10).
WRITE (NAME) TO TARGET. WRITE / TARGET. 螢幕可印出 LILY
?清除變數內容
語法:
CLEAR
清除變數現在內容, 恢復成初值 Example:
DATA N TYPE I VALUE 100. CLEAR N.
變數 N 的內容變成 0
?算術符號
** 乘冪 * 乘 / 除 + 加 - 減
DIV 整數除法 MOD 餘數除法
13
?數值函數
1.ABS(N): 傳回數值 N 的絕對值 2.SIGN(N): 1 if N > 0
0
if N = 0
-1 if N < 0
3.CEIL(N): 傳回大於數值N的最小整數 Example:
WRITE CEIL(-5.65) 印出 –5.00 WRITE CELL(4.54) 印出 5.00 4.FLOOR(N): 傳回小於數值N的最大整數 Example:
WRITE FLOOR(-5.65) 印出 –6.00 WRITE FLOOR(4.54) 印出 4.00 5.TRUNC(N): 傳回數值N的整數部分 Example:
WRITE TRUNC(5.65) 印出 5.00 6.FRAC(N): 傳回數值 N 的小數部分 Example:
WRITE FRAC(5.65) 印出 0.65
7.COS(A),SIN(A),TAN(A): 傳回三角函數 cos A, sin A, tan A 的值, A 為弳度量 8.EXP(N): 傳回 e^N 值 8.LOG(N): 傳回 log eN 值 9.LOG10(N): 傳回 log N值 10.SQRT(N): 傳回 N 的平方根值
?日期與時間運算
1.日期資料的運算
日期資料可以直接運算, 如加法與減法的運算 Example:
DATA: Mdata TYPE D.
Mdate = SY-DATUM. “ 如傳回 19971015 Mdate+6(2) = ?01? “ Mdate 變成 19971001 Mdate = Mdate - 1 “ Mdate 變成 19970931
14
2.時間資料的運算
時間格式為 ?hhmmss?, 如 ?212030? 表 ?21:20:30? Example:
DATA: HOURS TYPE I, MINUTES TYPE I,
T2 TYPE T VALUE ?200000?, T1 TYPE T VALUE ?183000?. HOURS = (T2 - T1) / 3600. “計算有幾小時 MINUTES = (T2 – T1) / 60. “計算幾分鐘
?字串資料處理
1.字串移位 語法:
SHIFT
DATA STRING(10) VALUE ?ABCDEFGHIJ?. SHIFT STRING. “得到 BCDEFGHI?
SHIFT STRING BY 2 PLACES RIGHT. “得到 ABCDEFGH 2.取代字串內容 語法:
REPLACE
DATA: STRING(10) VALUE ?ABCDEFGHI?, STR1(3) VALUE ?DEF?, STR2(3) VALUE ?123?.
REPLACE STR1 WITH STR2 INTO STRING. WRITE / STRING. “得到 ABC123GHI 3.大小寫的轉換 語法:
TRANSLATE
15
4.在字串中尋找部分字串 語法:
SEARCH
DATA STRING(10) VALUE ?ABCDEFGHIJ?.
會回存至兩個變數, SY-SUBRC 和 SY-FDPOS, 若找到則 SY-SUBRC 為 0 SY-FDPOS 存開始位疊, 若找不到則 SY-SUBRC為 4, SY-FDPOS為 0 5.字串長度 STRLEN(
INT = STRLEN(?XYZABC?). “得到 6 INT = STRLEN(?ABC ? ). “得到 3 6.取部分字串
DATA T(10) VALUE ?ABCDEFGHIJ?. WRITE / T+2(4). “得到 CDEF
16
2.5 Flow Controlling
?比較符號
1. = 或 EQ : 等於 2. <> 或 >< 或 NE : 不等於 3. < 或 LT : 小於
4. <= 或 LE : 小於等於 5. > 或 GT : 大於 6. >= 或 GE : 大於等於 7. AND : 且 8. OR : 或 9. NOT : 非
?條件述敘
1. IF 述敘
語法:
IF
(1).在每個判斷敘述之後要加上 .
(2).在巢狀迥圈之中無法使用 ELSE 敘述, ELSE 敘述屬 IF 敘述 Example:
IF 3 > 8.
WRITE / ?3 is less than 8?. ENDIF.
17
2. CASE 敘述 語法:
CASE <變數f>. WHEN
WHEN OTHERS.
S = ?A?. CASE S. WHEN ?X?.
WRITE / ?String is X?. WHEN OTHERS.
WRITE / ?String is not X?. ENDCASE.
?迥圈敘述
1.計次迥圈 語法:
DO [n TIMES] [VARYING
DO 2 TIMES. WRITE / ?X?. ENDDO. 執行結果: X X
DO VARYING I FROM 1 TO 10. S = S + I. ENDDO.
18
WRITE: / ,?1+2+3+…+10=?,S 執行結果: 1+2+3+…+10=55 2.條件迥圈
語法:
WHILE
WHILE I <= 10. S = S+I. I=I+1. ENDWHILE.
WRITE: / ? 1+2+3+…+10=?,S. 執行結果為: 1+2+3+…+10=55
?迥圈控制敘述
1.CONTINUE 跳至迥圈的下一次 Example:
DO 3 TIMES. IF SY-INDEX = 2. CONTINUE. WRITE / SY-INDEX. ENDDO. 執行結果: 1 3 2.CHECK
CHECK 之後條件成立才繼續往下執行迥圈 Example:
DO 5 TIMES.
CHECK SY-INDEX BETWEEN 2 AND WRITE / SY-INDEX. ENDDO.
19
4. 執行結果: 2 3 4 3.EXIT 跳離迥圈敘述 Example:
DO 10 TIMES. IF SY-INDEX = 4. EXIT. ENDIF
WRITE / SY-INDEX. ENDDO. 執行結果: 1 2 3
?無窮迥圈
DO .
無窮迥圈必頇配合 EXIT 敘述來執行
20
2.6 Processing Internal Table
?Internal Table 的宣告
ABAP/4的 Internal Table 如同其它語言的陣列結構, 在操作上可以有複製,刪除,新增插入等功
能.
1.使用 TYPE 敘述
語法:
TYPES
TYPES A TYPE I OCCURS 10. A 是個10個元素的數值Internal Table Example:
TYPES: BEGIN OF LINE, COL1 TYPE I, COL3 TYPE I, END OF LINE.
TYPES ITAB TYPE LINE OCCURS 10.
宣告一個Internal Table ITAB, 總共有10個元素, 其WORK AREA 名稱 為 LINE 2.使用 DATA 敘述
若使用DATA敘述來宣告Internal Table, 可分成要不要有HEADER LINE, HEADER LINE 就 是所謂的 WORK AREA, 用在資料的存取上. 語法:
DATA
DATA VECTOR TYPE I OCCURS 10 WITH HEADER LINE.
3.直接宣告, 不使用 WORK AREA 語法:
DATA: BEGIN OF
21
Example:
DATA: BEGIN OF ITAB OCCURS 10, COL1 TYPE I, COL2 TYPE I, END OF ITAB.
如此產生的Internal Table 不會有 Work Area, 也就是宣告時不會 Reference 其它的 Conponent 宣告
?Append Line
語法:
APPEND [
DATA: BEGIN OF LINE, COL1 TYPE I, COL2 TYPE I, END OF LINE.
DATA ITAB LIKE LINE OCCURS 10. DO 2 TIMES.
LINE-COL1 = SY-INDEX. “SY-INDEX為迥圈的 Counter LINE-COL2 = SY-INDEX **2.
APPEND LINE INTO ITAB. “新增至 Internal Table中 ENDDO.
LOOP AT ITAB INTO LINE. “ITAB 總共有兩個元素 WRITE: / LINE-COL1,LINE-COL2. ENDLOOP. 執行結果為:
1 1
2 4
Example: 不使用 Work Area
DATA: BEGIN OF ITAB OCCURS 10, COL1 TYPE I, COL2 TYPE I, END OF ITAB. DO 2 TIMES.
22
ITAB-COL1 = SY-INDEX. ITAB-COL2 = SY-INDEX **2.
APPEND ITAB. “新增至 Internal Table中 ENDDO.
LOOP AT ITAB. “ITAB 總共有兩個元素 WRITE: / ITAB-COL1,ITAB-COL2. ENDLOOP. 執行結果為:
1 1
2 4
?加入另一Internal Table的元素 語法:
APPEND LINES OF
APPEND LINES OF ITAB TO JTAB. 將ITAB所有元素加入JTAB中
?Collect Line
在加入新元素時將有相同standard key(非數值欄位)的數值欄位匯總 語法:
COLLECT [
Example:
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 = ?XYZ?. ITAB-COL2 = 20. COLLECT ITAB.
ITAB-COL1 = ?ABC?. ITAB-COL2 = 30.
23
WRITE: / ITAB-COL1,ITAB-COL2. ENDLOOP. 執行結果: ABC 40 XYZ 20
?Insert Line
插入元素在指定的Internal Table位置之前 語法:
INSERT [
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 ITAB INDEX 2. “插入在位置2之前 LOOP AT ITAB INTO LINE.
WRITE: / SY-TABIX,LINE-COL1,LINE-COL2. “SY-TABIX為Table位置 ENDLOOP. 執行結果:
1 10 20
2 100 200 “插入的元素 3 20 40 4 30 60
24
?插入另一Internal Table元素
語法:
INSERT LINES OF
將
Example:
APPEND LINES OF ITAB TO JTAB INDEX 3. 將ITAB所有元素插入JTAB中, 位置在第三個元素之前
?Internal Table元素資料的讀取
語法:
LOOP AT
根據設定的範圍選取原素資料, 讀完後自動移往下一筆 Example:
LOOP AT ITAB INTO LINE WHERE COL1 >100. WRITE: / SY-TABIX,LINE-COL1. ENDLOOP.
僅讀取 COL1 > 100 的元素
?讀取Internal Table指定位置的元素
語法:
READ TABLE
READ TABLE ITAB INTO LINE INDEX 5 讀取 ITAB的第5個元素資料, 放入 LINE的欄位中
?根據欄位內容尋找
語法:
READ TABLE
ITAB-COL1 = ?ABC?.
READ TABLE ITAB INTO LINE.
找出ITAB 中 COL1 欄位內容是 ABC 的元素, 找到的值放入 LINE 中 若找到 SY-SUBRC傳回0, 找不到則傳回 4,
25
?異動元素內容
語法:
MODIFY
TRANSPORTING
LINE-COL1 = 4. LINE-COL2 = 100.
MODIFY ITAB FROM LINE. 將目前位置元素以LINE的內容異動 Example:
LINE-COL1 = 10.
MODIFY ITAB FROM LINE INDEX 3 TRANSPORTING COL1. 將第三個元素的COL1欄位異動為 10
?Delete Lines
刪除Internal Table 的元素 語法:
DELETE
DELETE ITAB INDEX 4 刪除第四個元素 加上刪除條件:
DELETE
DELETE ITAB FROM 3 TO 10. 刪除第3至第10個元素
?Internal Table Sorting
語法:
SORT
[
SORT ITAB DESCENDING BY COL2. 將 ITAB 根據 COL2欄位遞減排序
26
?計算數值欄位總和
語法: SUM
計算得總和存在work area 中, 但只能存在 LOOP 敘述中 Example:
LOOP AT ITAB INTO LINE. SUM. ENDLOOP.
WRITE: / LINE-COL1,LINE-COL2. LINE-COL1 和 LINE-COL2 存數值總和
?Initial Table
1.REFRESH
使用在沒有 HEADER LINE 的 Internal Table中, 清除所有元素 Example:
REFRESH ITAB.
2. CLEAR
使用在有 HEADER LINE 的 Internal Table中, 清除所有元素 Example:
CLEAR ITAB[ ].
3.FREE
釋放(Release) Internal Table所佔的記憶體空間, 用在 REFRESH和 CLEAR指令之後 Example:
FREE ITAB.
27
2.7 Processing Dictionary Table
R/3對於存放在Relation Database 的資料可使用 SQL 指令讀取或處理, 指令種類
可分成DDL(Data Definition Language)指令, 如CREATE, 及DML(Data Manipulation Language) , 如 SELECT及INSERT等, 處理方式分成 OPEN SQL 及 NATIVE SQL, 前者在處理時, Database 與Command Interpreter 間有一Buffer區, 如SELECT * FROM…, 後者則直接處理
資料庫, 如 EXCE SQL SELECT…等, 有兩個重要的系統變數: SY-SUBRC: 傳回 0 表成功執行指令, 4 表未找到符合條件資料 SY-DBCNT: 正處理的資料筆數
?TABLES 指令
用於宣告程式中所使用的tables 語法:
TABLES table
?SELECT 指令
自資料庫讀取記錄
語法:
SELECT
1.以迥圈方式讀取所有記錄 語法:
SELECT [DISTINCT] * … ….. ENDSELECT.
加上[DISTINCT]會自動去除重覆的記錄 Example:
TABLES SPFLI.
SELECT * FROM SPFLI WHERE COMPANY=?DELTA?. WRITE: / PLANT,TEL. ENDSELECT.
會以迥圈的方式逐筆印出符合條件的記錄
2.讀取單筆記錄 語法:
SELECT SINGLE * FROM …. WHERE….
28
Example:
TABLES SPFLI.
SELECT SINGLE * FROM SPFLI
WHERE PLANT =?CHUNGLI? AND TEL=?4526174?. WRITE: / SPFLI-COMPANY,SPFLI-PLANT,SPFLI-TEL. 3.將讀取的記錄存放至 Work Area 語法:
SELECT ….. INTO
TABLES SPFLI.
DATA WA LIKE TABLES.
SELECT * FROM SPFLI INTO WA. WRITE: / WA-COMPANY,WA-PLANT. ENDSELECT.
逐筆寫入WA 工作區中
4.將讀取的資料寫入 Initial Table 中 語法:
SELECT .. INTO TABLE
DATA ITAB LIKE SPFLI OCCURS 10 WITH HEADER LINE. SELECT * FROM SPFLI INTO ITAB. 一次讀10筆(Initial Table的長度)記錄存入 ITAB 中
SELECT .. INTO TABLE
TABLES SPFLI.
DATA ITAB LIKE SPFLI OCCURS 10 WITH HEADER LINE. SELECT * FROM SPFLI INTO ITAB PACKAGE SIZE 5. 一次讀取 5 筆記錄
5.條件敘述 語法:
WHERE
29
(1).BETWEEN
WHERE YEAR BETWEEN 1995 AND 2000.
(2).LIKE
表示條件包含的字串 <1>._:表示一個字元 <2> % : 表示一個字串 Example:
..WHERE NAME LIKE ?LEE%?. 條件為NAME欄位前3個字元為 LEE ..WHERE MODEL LIKE ??%SPS%?. 條件為MODEL欄位包含 SPS的記錄
(3).IN (
..WHERE PLANT IN (?TAOYUAN?,?CHUNGLI?,?LIUTU?). 條件為 PLANT 是 TAOYUAN,CHUNGLI或LIUTU的記錄
6.ORDER BY 敘述 指定排序的欄位或順序
(1). ..ORDER BY PRIMARY KEY. 根據 PRIMARY KEY 遞增排序
(2)…ORDER BY
SELECT * FROM IM ORDER BY PART .
?INSERT 指令
加入一筆記錄至資料庫
1.自 Work Area 工作區 語法:
INSERT INTO
30
TABLES SPFLI.
DATA WA LIKE SPFLI. WA-NO = ?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的結構與資料檔 SPFLI一樣, 所以也可 寫成 INSERT SPFLI.
2.自 Internal Table 語法:
INSERT
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 指令
異動已存在的記錄內容
1.使用 Primary Key 語法:
UPDATE
31
TABLES SPFLI.
DATA WA LIKE SPFLI. WA-NO=?34051920?. WA-COMPANY=?DELTA?. UPDATE SPFLI FROM WA.
如 SPFLI 的 Primary Key是 NO, 則會找到 NO=?34051920? 的記錄, 將其 COMPANY欄位異動為 DELTA
2.使用條件式 語法:
UPDATE
UPDATE SPFLI SET NO=?34051920? COMPANY = ?DELTA? WHERE TEL=?4526107?.
?MODIFY 指令
根據 Primary Key 尋找資料檔中符合的記錄, 若找到則更新異動, 若找不到則新增記錄 語法:
MODIFY
WA-NO=?34051920?. WA-COMPANY=?DELTA?. MODIFY SPFLI FROM WA.
?DELETE 指令
刪除資料檔的記錄
1.使用 Primary Key 語法:
DELETE
TABLES SPFLI.
DATA WA LIKE SPFLI. WA-NO=?34051920?.
32
WA-COMPANY=?DELTA?. DELETE SPFLI FROM WA.
如 SPFLI 的 Primary Key是 NO, 則會找到 NO=?34051920? 的記錄, 找到後將此筆刪除
2.使用條件式 語法:
DELETE FROM
DELETE FROM SPFLI WHERE AREA = ?AMERICAN?.
?DATABASE CURSOR
Database Cursor是一個資料庫暫存區, 將經SELECT指令讀取的記錄存放至此暫存區, 再由此暫存區放至Work Area中, 可見少資料庫讀取的次數.
1.開啟 Database Cursor 語法:
OPEN CURSOR
TABLES SPFLI.
DATA: WA LIKE SPFLI, C1 TYPE CURSOR.
OPEN CURSOR C1 FOR SELECT * FROM SPFLI WHERE AREA =?TAIWAN?.
2.讀取 Database Cursor的資料存入 Work Area
語法:
FETCH NEXT CURSOR
FETCH NEXT CURSOR C1 INTO WA.
讀取下一筆Cursor位置的資料存入 WA, 如果已無資料可讀, SY-SUBRC 不傳回 0
4.關閉 Database Cursor 語法:
CLOSE CURSOR
33
Example:
CLOSE CURSOR C1.
?COMMIT WORK 與 ROLLBACK WORK
要確定資料成功寫入資料庫, 可使用 COMMIT WORK 指令, 如: COMMIT WORK.
相反的, 如果反悔要復原, 可使用 ROLLBACK WORK, 可復原在上個COMMIT WORK 指令之後的資料, 如: ROLLBACK WORK.
?使用 NATIVE SQL指令
語法:
EXEC SQL [PERFORMING
正在阅读:
APAP4基本语法参考04-09
中小企业留不住人的症结和解决办法08-20
原创:新版GMP现场检查指导原则与新版ISO 13485对比(连载一)03-23
208年继续教育(小学数学)专业试题10-09
2011版物理一轮精品复习学案:第一章 机械振动 机械波(选修3-4)04-25
水文地质学基础练习及答案06-01
上海市教师资格认定条件及2011年秋季申请流程(1)(2011-09-01 08.54.31)11-26
数学广角单元教材分析05-29
CAD在校施工设计实习日记40篇(1)06-07
安全组织设计05-22
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 语法
- 参考
- 基本
- APAP4
- 唐山市中心区经济适用住房管理实施细则
- 高中化学学习方法指导
- 豆腐是我们中国人平时吃的最多的美食之一 - 图文
- 一次函数及其性质
- 急诊管理与持续改进细则分解
- 2001年东西部合作与贸易洽谈会调查报告
- 学习写得充实
- 鑫禾公司员工手册
- 六年级品社教学工作总结
- 我国注销税务登记制度存在的问题
- 中国智库的商业模式及发展方向
- 第四章习题及解答
- 湖南省高级人民法院关于审查和执行非诉行政执行案件的若干规定
- 宜昌周边旅游景点与户外路线大集会 - 图文
- 安般法门重点在(南师衣中珠之探寻系列)
- 停电预案
- 企业会计准则应用指南—会计科目和主要账务处理 - 成本类
- 弹塑性力学定理和公式
- 数值积分及其MATLAB实现
- 停车场泊车位的规划设计与效度评价 - 图文