1 / 35

ABAP Basic Concept (1)

ABAP Basic Concept (1). ABAP 程式編輯工具 ABAP Editor 、 Object Navigator 資料型態 簡單型態、自定型態、自定結構型態 變數 Element Data Object Work Area Internal Table :型態定義、變數宣告、操作 常用系統參數. 1. ABAP 程式編輯工具. ABAP Editor (SE38) 或 Tools → ABAP Workbench → Development→ User Interface → ABAP Editor 編輯、編譯與執行程式

nami
Download Presentation

ABAP Basic Concept (1)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ABAP Basic Concept (1) • ABAP程式編輯工具 • ABAP Editor、Object Navigator • 資料型態 • 簡單型態、自定型態、自定結構型態 • 變數 • Element Data Object • Work Area • Internal Table:型態定義、變數宣告、操作 • 常用系統參數

  2. 1. ABAP程式編輯工具 • ABAP Editor (SE38) • 或Tools → ABAP Workbench → Development→ User Interface → ABAP Editor • 編輯、編譯與執行程式 • SAP規定user欲create之objects名稱,必需以z為開頭 • Object Navigator (SE80) • 或Tools → ABAP Workbench → Overview → Object Navigator • 協助使用者尋找物件(程式) 、將程式中的物件列出 • 結合ABAP Editor,可直接編寫程式

  3. Check Activate Program name 若要找zyy開頭之程式, 可輸入zyy*,再按F4 Execute ABAP Editor進入畫面

  4. Program 可用來找想要的程式 Development class可建立class來存放user所建立的program, table 會將中間碼放到Server Object Navigator進入畫面

  5. 程式內所使用的物件列表 program可以在這裡閱讀、修改或執行 Object Navigator內頁畫面

  6. 2. 資料型態 • 簡單型態 • 自定型態 • 自定結構型態

  7. 2.1 簡單型態 • ABAP 預先定義的簡單型態 • C Character • N Numeric Text • D Date (YYYYMMDD) • T Time (HHMMSS) • I Integer • F Floating Point Number • X Byte • P Packet Number (格式化數值) …

  8. 2.2 自定型態 • TYPES <user defined type> TYPE <basic type> <user defined type> • Ex: 定義My_Type1為6個字元之字串: TYPES My_Type1(6) TYPE C. TYPES My_Type2 TYPE My_Type1. • TYPES <user defined type> LIKE <abap-dictionary field> • Ex: TYPES MY_TYPE3 LIKE BKPF-BUKRS. (表格-欄位)

  9. 2.3 自定結構型態 • TYPES:BEGIN OF <structure name>, <field1-name > TYPE (LIKE) <type> , <field2-name > TYPE (LIKE) <type> , …. ,END OF <structure name>.

  10. 資料型態定義舉例 TYPES FIELD1 TYPE C. TYPES: BEGIN OF MY_STRUC1, FIELD1 TYPE C, FIELD2 TYPE I, FIELD3 TYPE MY_STRUC1-FIELD1, FIELD4 TYPE FIELD1, FIELD5 LIKE BKPF-BUKRS, END OF MY_STRUC1.

  11. 資料型態定義舉例 (Cont.) TYPES: BEGIN OF MY_STRUC2, FIELD6 TYPE C, FIELD7 TYPE I, END OF MY_STRUC2. TYPES: BEGIN OF MY_STRUC3. INCLUDE TYPE MY_STRUC1 AS STRUC1. INCLUDE TYPE MY_STRUC2 AS STRUC2. TYPES: END OF MY_STRUC3.

  12. 3. 變數 • ABAP提供三種不同的變數: • Element Data Object • 單值變數 • Work Area • 以多個欄位表示多個值(類似record) • Internal Table • 類似table的概念,多行多列

  13. 變數宣告語法 • DATA <varname> TYPE <ABAP dictionary type> <user defined type> • DATA <varname> LIKE <data object> TYPE+型態 LIKE+資料(變數)物件

  14. 3.1 Element Data Object • 宣告變數與常數值 • Variable,例如: • DATA MY_DATA1(10) TYPE C. • DATA MY_DATA2 TYPE I. • MY_DATA1 = 'test'. • MY_DATA2 = 1234. • DATA MY_DATA3(10) TYPE C VALUE 'pucsim'. • WRITE: MY_DATA1, MY_DATA2 , MY_DATA3. • Constants,例如: • CONSTANTS pi TYPE P DECIMALS 4 VALUE '3.1415' .

  15. 練習A • 宣告單值變數 (程式名稱zyyxx_ex_a) • 定義一個使用者自訂型態MY_TYPE,且MY_TYPE的型態為C、長度為10 • 宣告一個變數MY_DATA1,其型態為MY_TYPE 的型態,並在宣告時給初始值。 • 宣告一個變數MY_DATA2,其型態為MY_DATA1的型態,宣告後再設定此變數的值。 • 將以上兩變數印出。

  16. 練習A參考解答 REPORT zyytc_ex_a. TYPES MY_TYPE(10) TYPE C. DATA MY_DATA1 TYPE MY_TYPE VALUE 'george'. DATA MY_DATA2 LIKE MY_DATA1. MY_DATA2 = 'yang'. WRITE: MY_Data1, MY_DATA2. Test按鈕看程式執行結果

  17. 3.2 Work Area • 將多個變數組合在一個物件中,以利資料的處理 • 基本上就是一個Structure,或是Record • 兩種宣告方法 • 先定義structure type,再提供給Work Area使用 • DATA <name> TYPE <structure type> • 直接定義 • DATA : BEGIN OF wa_struc , field1 TYPE <type>, field2 TYPE <type>, END OF wa_struc. Work Area中各欄位所存值以<Work Area>-<Field name>與 之對應

  18. Work Area (Cont.) • 複製資料: • MOVE-CORRESPONDING <wa1> TO <wa2> PS: 二者皆有之欄位才會進行複製

  19. Work Area舉例 TYPES: BEGIN OF MY_STRUC1, FIELD1(10) TYPE C, FIELD2 TYPE I, FIELD3(5) TYPE N, END OF MY_STRUC1. DATA WA_MYDATA1 TYPE MY_STRUC1. WA_MYDATA1-FIELD1 = 'MY_DATA1-C'. WA_MYDATA1-FIELD2 = 11111. WA_MYDATA1-FIELD3 = '12345'. WRITE: WA_MYDATA1-FIELD1, WA_MYDATA1-FIELD2, WA_MYDATA1-FIELD3.

  20. Work Area舉例 (Cont.) DATA: BEGIN OF WA_MYDATA2, FIELD1(10) TYPE C, FIELD2 TYPE I, FIELD3(5) TYPE N, END OF WA_MYDATA2. WA_MYDATA2-FIELD1 = 'MY_DATA2-C'. WA_MYDATA2-FIELD2 = 22222. WA_MYDATA2-FIELD3 = '67890'. WRITE: / WA_MYDATA2-FIELD1, WA_MYDATA2-FIELD2, WA_MYDATA2-FIELD3. MOVE-CORRESPONDING WA_MYDATA2 TO WA_MYDATA1. WRITE: / WA_MYDATA1-FIELD1, WA_MYDATA1-FIELD2, WA_MYDATA1-FIELD3.

  21. 練習B • 宣告Work Area變數 (程式名稱zyyxx_ex_b) • 自定一個Structure type,包含2個欄位(NAME為10個字元;AGE為整數) • 宣告第一個Work Area變數,使用上述之自訂Structure type,並令NAME為'Tom',AGE為22 • 宣告第二個Work Area變數,並直接定義其結構,包含2個欄位 (NAME為10個字元;INCOME為整數) ,並令NAME為'Peter',INCOME為28000 • 複製第二個Work Area變數至第一個Work Area變數 • 將以上兩變數的所有欄位值印出。

  22. 練習B參考解答 REPORT zyytc_ex_b. TYPES: BEGIN OF TCYANG_STRUCTURE, NAME(10) TYPE C, AGE TYPE I, END OF TCYANG_STRUCTURE. DATA PERSON1 TYPE TCYANG_STRUCTURE. PERSON1-NAME = 'Tom'. PERSON1-AGE = 22.

  23. 練習B參考解答 (Cont.) DATA: BEGIN OF PERSON2, NAME(10) TYPE C, INCOME TYPE I, END OF PERSON2. PERSON2-NAME = 'Peter'. PERSON2-INCOME = 28000. MOVE-CORRESPONDING PERSON2 TO PERSON1. WRITE: / PERSON1-NAME, PERSON1-AGE. WRITE: / PERSON2-NAME, PERSON2-INCOME.

  24. 3.3 Internal Table • 與DB中table的概念相同 • 有多個欄位並且可儲存多筆資料(多個structure的集合) • 類似MS ADO物件中的 Recordset

  25. (1) Internal TableType型態定義 • TYPES itabtype TYPE <tabkind> OF <structure type> [WITH <key>] • Tabkind有三種:STANDARD TABLE, SORTED TABLE, HASHED TABLE • 範例:定義ITAB為sorted table,參考line之結構型態,並以COLUMN1為unique key 。 • TYPES: BEGIN OF LINE, COLUMN1 TYPE I, COLUMN2 TYPE I, COLUMN3 TYPE I, END OF LINE. TYPES ITAB TYPE SORTED TABLE OF LINE WITH UNIQUE KEY COLUMN1.

  26. (2) Internal Table變數宣告 • 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.

  27. Internal Table with Header Lines Header Line <itab> • DATA <itab> TYPE <itabtype> WITH HEADER LINE Internal Table <itab> • DATA <itab> TYPE <itabtype> Work Area <wa> Internal Table <itab>

  28. Internal Table變數宣告 (Cont.) • 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.

  29. (3) Internal Table操作 INDEX ?

  30. Internal Table操作 (Cont.) • 列印Table中之所有records LOOP AT TABLE名稱 WRITE:/ TABLE名稱-欄位 ENDLOOP • 補充 • SKIP 跳一行 • ULINE 畫一條線 • WRITE: / 由新的一行開始列印

  31. Internal Table舉例 TYPES: BEGIN OF MY_STRUC, NAME(10) TYPE C, AGE TYPE I, END OF MY_STRUC. TYPES TAB1 TYPE STANDARD TABLE OF MY_STRUC. DATA ITAB1 TYPE TAB1 WITH HEADER LINE. DATA ITAB2 TYPE STANDARD TABLE OF MY_STRUC WITH HEADER LINE. DATA PERSON1 TYPE MY_STRUC. DATA PERSON2 TYPE MY_STRUC. DATA PERSON3 TYPE MY_STRUC.

  32. Internal Table舉例 (Cont.) PERSON1-NAME = 'George'. PERSON1-AGE = 34. PERSON2-NAME = 'Tom'. PERSON2-AGE = 22. PERSON3-NAME = 'Doris'. PERSON3-AGE = 30. APPEND PERSON1 TO ITAB1. APPEND PERSON2 TO ITAB1. WRITE: / 'APPEND TABLE:'. LOOP AT ITAB1 . WRITE : / ITAB1-NAME, ITAB1-AGE. ENDLOOP.

  33. 練習C • 使用Internal Table變數 (程式名稱zyyxx_ex_c) • 繼續前兩頁實例,將PERSON1及PERSON2分別新增於ITAB2表格中。 • PERSON3插入於ITAB2表格之第二筆記錄。 • 跳一行,再印出一條線。 • 印出『INSERT TABLE:』之標題。 • 將ITAB2的所有記錄之各個欄位全部印出。

  34. 練習C參考解答 APPEND PERSON1 TO ITAB2. APPEND PERSON2 TO ITAB2. INSERT PERSON3 INTO ITAB2 INDEX 2. SKIP. ULINE. WRITE: / 'INSERT TABLE:'. LOOP AT ITAB2 . WRITE : / ITAB2-NAME, ITAB2-AGE. ENDLOOP.

  35. 4. 常用系統參數 • Sy-datum • Date and time, current application server date • Sy-uzeit • Date and time, current application server time • Sy-subrc • Return value, return value after ABAP statements • Ex: 搜尋資料庫時,至少找到一筆資料,則其值為 0 • Sy-lsind • List processing, details list index (表示Detail List處在第幾層)

More Related