ABAP Basic Concept 1 n ABAP ABAP EditorObject
ABAP Basic Concept (1) n ABAP程式編輯 具 – ABAP Editor、Object Navigator n 資料型態 – 簡單型態、自定結構型態 n 變數 – Element Data Object – Work Area – Internal Table:型態定義、變數宣告、操作 n 常用系統參數 ABAP程式設計 楊子青 1
1. ABAP程式編輯 具 n ABAP Editor (SE 38) – 或Tools → ABAP Workbench → Development→ User Interface → ABAP Editor – 編輯、編譯與執行程式 – SAP規定user欲create之objects名稱,必需以z為開頭 n Object Navigator (SE 80) – 或Tools → ABAP Workbench → Overview → Object Navigator – 協助使用者尋找物件(程式) 、將程式中的物件列出 – 結合ABAP Editor,可直接編寫程式 ABAP程式設計 楊子青 2
ABAP Editor進入畫面 Check Activate Execute Program name 若要找zyy開頭之程式, 可輸入zyy*,再按F 4 ABAP程式設計 楊子青 3
Object Navigator進入畫面 Program 可用來找想要的程式 Development class可建立class來存放user所建立的program, table 會將中間碼 放到Server ABAP程式設計 楊子青 4
2. 1 簡單型態 n ABAP 預先定義的簡單型態 – – – – C Character N Numeric Text D Date (YYYYMMDD) T Time (HHMMSS) I Integer F Floating Point Number X Byte P Packet Number (格式化數值) … ABAP程式設計 楊子青 7
2. 2 自定型態 n TYPES <user defined type> TYPE <basic type> <user defined type> – Ex: 定義My_Type 1為 6個字元之字串: TYPES My_Type 1(6) TYPE C. TYPES My_Type 2 TYPE My_Type 1. n TYPES <user defined type> LIKE <abap-dictionary field> – Ex: TYPES MY_TYPE 3 LIKE BKPF-BUKRS. (表格-欄位) ABAP程式設計 楊子青 8
2. 3 自定結構型態 n TYPES: BEGIN OF <structure name>, <field 1 -name > TYPE (LIKE) <type> , <field 2 -name > TYPE (LIKE) <type> , …. , END OF <structure name>. ABAP程式設計 楊子青 9
資料型態定義舉例 TYPES FIELD 1 TYPE C. TYPES: BEGIN OF MY_STRUC 1, FIELD 1 TYPE C, FIELD 2 TYPE I, FIELD 3 TYPE MY_STRUC 1 -FIELD 1, FIELD 4 TYPE FIELD 1, FIELD 5 LIKE BKPF-BUKRS, END OF MY_STRUC 1. ABAP程式設計 楊子青 10
資料型態定義舉例 (Cont. ) TYPES: BEGIN OF MY_STRUC 2, FIELD 6 TYPE C, FIELD 7 TYPE I, END OF MY_STRUC 2. TYPES: BEGIN OF MY_STRUC 3. INCLUDE TYPE MY_STRUC 1 AS STRUC 1. INCLUDE TYPE MY_STRUC 2 AS STRUC 2. TYPES: END OF MY_STRUC 3. ABAP程式設計 楊子青 11
變數宣告語法 n DATA <varname> TYPE <ABAP dictionary type> <user defined type> n DATA <varname> LIKE <data object> TYPE+型態 LIKE+資料(變數)物件 ABAP程式設計 楊子青 13
3. 1 Element Data Object n 宣告變數與常數值 – Variable,例如: • • • DATA MY_DATA 1(10) TYPE C. DATA MY_DATA 2 TYPE I. MY_DATA 1 = 'test'. MY_DATA 2 = 1234. DATA MY_DATA 3(10) TYPE C VALUE 'pucsim'. WRITE: MY_DATA 1, MY_DATA 2 , MY_DATA 3. – Constants,例如: • CONSTANTS pi TYPE P DECIMALS 4 VALUE '3. 1415'. ABAP程式設計 楊子青 14
練習A參考解答 REPORT zyytc_ex_a. TYPES MY_TYPE(10) TYPE C. DATA MY_DATA 1 TYPE MY_TYPE VALUE 'george'. DATA MY_DATA 2 LIKE MY_DATA 1. MY_DATA 2 = 'yang'. WRITE: MY_Data 1, MY_DATA 2. Test按鈕看程式執行結果 ABAP程式設計 楊子青 16
3. 2 Work Area n 將多個變數組合在一個物件中,以利資料 的處理 – 基本上就是一個Structure,或是Record n 兩種宣告方法 – 先定義structure type,再提供給Work Area使用 • DATA <name> TYPE <structure type> – 直接定義 • DATA : BEGIN OF wa_struc , field 1 TYPE <type>, field 2 TYPE <type>, END OF wa_struc. Work Area中各欄位所存值以 <Work Area>-<Field name>與 之對應 ABAP程式設計 楊子青 17
Work Area舉例 TYPES: BEGIN OF MY_STRUC 1, FIELD 1(10) TYPE C, FIELD 2 TYPE I, FIELD 3(5) TYPE N, END OF MY_STRUC 1. DATA WA_MYDATA 1 TYPE MY_STRUC 1. WA_MYDATA 1 -FIELD 1 = 'MY_DATA 1 -C'. WA_MYDATA 1 -FIELD 2 = 11111. WA_MYDATA 1 -FIELD 3 = '12345'. WRITE: WA_MYDATA 1 -FIELD 1, WA_MYDATA 1 -FIELD 2, WA_MYDATA 1 -FIELD 3. ABAP程式設計 楊子青 19
Work Area舉例 (Cont. ) DATA: BEGIN OF WA_MYDATA 2, FIELD 1(10) TYPE C, FIELD 2 TYPE I, FIELD 3(5) TYPE N, END OF WA_MYDATA 2 -FIELD 1 = 'MY_DATA 2 -C'. WA_MYDATA 2 -FIELD 2 = 22222. WA_MYDATA 2 -FIELD 3 = '67890'. WRITE: / WA_MYDATA 2 -FIELD 1, WA_MYDATA 2 -FIELD 2, WA_MYDATA 2 -FIELD 3. MOVE-CORRESPONDING WA_MYDATA 2 TO WA_MYDATA 1. WRITE: / WA_MYDATA 1 -FIELD 1, WA_MYDATA 1 -FIELD 2, WA_MYDATA 1 -FIELD 3. ABAP程式設計 楊子青 20
練習B參考解答 REPORT zyytc_ex_b. TYPES: BEGIN OF TCYANG_STRUCTURE, NAME(10) TYPE C, AGE TYPE I, END OF TCYANG_STRUCTURE. DATA PERSON 1 TYPE TCYANG_STRUCTURE. PERSON 1 -NAME = 'Tom'. PERSON 1 -AGE = 22. ABAP程式設計 楊子青 22
練習B參考解答 (Cont. ) DATA: BEGIN OF PERSON 2, NAME(10) TYPE C, INCOME TYPE I, END OF PERSON 2 -NAME = 'Peter'. PERSON 2 -INCOME = 28000. MOVE-CORRESPONDING PERSON 2 TO PERSON 1. WRITE: / PERSON 1 -NAME, PERSON 1 -AGE. WRITE: / PERSON 2 -NAME, PERSON 2 -INCOME. ABAP程式設計 楊子青 23
3. 3 Internal Table n 與DB中table的概念相同 – 有多個欄位並且可儲存多筆資料(多個structure的集合) – 類似MS ADO物件中的 Recordset Key access Table scan Binary Search Hash Function Access Using Mostly index Mostly key Key only Uniqueness Non-unique Unique/ Nonunique Unique ABAP程式設計 楊子青 24
(1) Internal Table Type型態定義 n TYPES itabtype TYPE <tabkind> OF <structure type> [WITH <key>] – Tabkind有三種:STANDARD TABLE, SORTED TABLE, HASHED TABLE – 範例:定義ITAB為sorted table,參考line之結構 型態,並以COLUMN 1為unique key 。 • TYPES: BEGIN OF LINE, COLUMN 1 TYPE I, COLUMN 2 TYPE I, COLUMN 3 TYPE I, END OF LINE. TYPES ITAB TYPE SORTED TABLE OF LINE WITH UNIQUE KEY COLUMN 1. ABAP程式設計 楊子青 25
(2) Internal Table變數宣告 n Reference to Declared Internal Table Types – DATA <itab> TYPE <itabtype> [WITH HEADER LINE]. • WITH HEADER line: declares an extra data object with the same name. You use it as a work area when working with the internal table. ABAP程式設計 楊子青 26
Internal Table with Header Lines n DATA <itab> TYPE <itabtype> WITH HEADER LINE Header Line <itab> Internal Table <itab> n DATA <itab> TYPE <itabtype> Work Area <wa> Internal Table <itab> ABAP程式設計 楊子青 27
Internal Table變數宣告 (Cont. ) n Declaring New Internal Tables – DATA <itab> TYPE <tabkind> OF <structure type或abap table> WITH <key> [WITH HEADER LINE]. • 範例:宣告ITAB為 hashed table,參考ABAP Dictionary中的SPFLI表格,並以CARRID及 CONNID 為 unique key。 – DATA ITAB TYPE HASHED TABLE OF SPFLI WITH UNIQUE KEY CARRID CONNID. ABAP程式設計 楊子青 28
(3) Internal Table操作 INDEX ? ABAP程式設計 楊子青 29
Internal Table操作 (Cont. ) n 列印Table中之所有records LOOP AT TABLE名稱 WRITE: / TABLE名稱-欄位 ENDLOOP n 補充 – SKIP 跳一行 – ULINE 畫一條線 – WRITE: / 由新的一行開始列印 ABAP程式設計 楊子青 30
Internal Table舉例 TYPES: BEGIN OF MY_STRUC, NAME(10) TYPE C, AGE TYPE I, END OF MY_STRUC. TYPES TAB 1 TYPE STANDARD TABLE OF MY_STRUC. DATA ITAB 1 TYPE TAB 1 WITH HEADER LINE. DATA ITAB 2 TYPE STANDARD TABLE OF MY_STRUC WITH HEADER LINE. DATA PERSON 1 TYPE MY_STRUC. DATA PERSON 2 TYPE MY_STRUC. DATA PERSON 3 TYPE MY_STRUC. ABAP程式設計 楊子青 31
Internal Table舉例 (Cont. ) PERSON 1 -NAME = 'George'. PERSON 1 -AGE = 34. PERSON 2 -NAME = 'Tom'. PERSON 2 -AGE = 22. PERSON 3 -NAME = 'Doris'. PERSON 3 -AGE = 30. APPEND PERSON 1 TO ITAB 1. APPEND PERSON 2 TO ITAB 1. WRITE: / 'APPEND TABLE: '. LOOP AT ITAB 1. WRITE : / ITAB 1 -NAME, ITAB 1 -AGE. ENDLOOP. ABAP程式設計 楊子青 32
練習C參考解答 APPEND PERSON 1 TO ITAB 2. APPEND PERSON 2 TO ITAB 2. INSERT PERSON 3 INTO ITAB 2 INDEX 2. SKIP. ULINE. WRITE: / 'INSERT TABLE: '. LOOP AT ITAB 2. WRITE : / ITAB 2 -NAME, ITAB 2 -AGE. ENDLOOP. ABAP程式設計 楊子青 34
4. 常用系統參數 n Sy-datum – Date and time, current application server date n Sy-uzeit – Date and time, current application server time n Sy-subrc – Return value, return value after ABAP statements – Ex: 搜尋資料庫時,至少找到一筆資料,則其值為 0 n Sy-lsind – List processing, details list index (表示Detail List處在 第幾層) ABAP程式設計 楊子青 35
- Slides: 35