ABAP Basic Concept (1)

35
C-1 ABAP 程程程程 程程程 ABAP Basic Concept (1) ABAP 程程程程程程 ABAP Editor Object Navigator 程程程程 – 程程程程 程程程程程 程程程程程程 、、 程程 Element Data Object Work Area Internal Table 程程程程程 程程程程程 程程 :、、 程程程程程程

description

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 編輯、編譯與執行程式 - PowerPoint PPT Presentation

Transcript of ABAP Basic Concept (1)

Page 1: ABAP Basic Concept (1)

C-1ABAP 程式設計 楊子青

ABAP Basic Concept (1) ABAP 程式編輯工具

– ABAP Editor 、 Object Navigator 資料型態

– 簡單型態、自定型態、自定結構型態 變數

– Element Data Object

– Work Area

– Internal Table :型態定義、變數宣告、操作 常用系統參數

Page 2: ABAP Basic Concept (1)

C-2ABAP 程式設計 楊子青

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 ,可直接編寫程式

Page 3: ABAP Basic Concept (1)

C-3ABAP 程式設計 楊子青

ABAP Editor 進入畫面

Program nameProgram name

CheckCheck ActivateActivate ExecuteExecute

若要找 zyy 開頭之程式,可輸入 zyy* ,再按 F4

Page 4: ABAP Basic Concept (1)

C-4ABAP 程式設計 楊子青

Object Navigator 進入畫面

Development class可建立 class來存放 user所建立的 program, table

Program 可用來找想要的程式

會將中間碼放到 Server

Page 5: ABAP Basic Concept (1)

C-5ABAP 程式設計 楊子青

Object Navigator 內頁畫面

program可以在這裡閱讀、修改或執行

程式內所使用的物件列表

Page 6: ABAP Basic Concept (1)

C-6ABAP 程式設計 楊子青

2. 資料型態

簡單型態 自定型態 自定結構型態

Page 7: ABAP Basic Concept (1)

C-7ABAP 程式設計 楊子青

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 ( 格式化數值 ) …

Page 8: ABAP Basic Concept (1)

C-8ABAP 程式設計 楊子青

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.

( 表格 - 欄位 )

Page 9: ABAP Basic Concept (1)

C-9ABAP 程式設計 楊子青

2.3 自定結構型態

TYPES:BEGIN OF <structure name>,

<field1-name > TYPE (LIKE) <type> , <field2-name > TYPE (LIKE) <type> , …. ,

END OF <structure name>.

Page 10: ABAP Basic Concept (1)

C-10ABAP 程式設計 楊子青

資料型態定義舉例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.

Page 11: ABAP Basic Concept (1)

C-11ABAP 程式設計 楊子青

資料型態定義舉例 (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.

Page 12: ABAP Basic Concept (1)

C-12ABAP 程式設計 楊子青

3. 變數 ABAP 提供三種不同的變數:

– Element Data Object • 單值變數

– Work Area• 以多個欄位表示多個值 ( 類似

record)

– Internal Table• 類似 table 的概念,多行多列

Page 13: ABAP Basic Concept (1)

C-13ABAP 程式設計 楊子青

變數宣告語法

DATA <varname> TYPE <ABAP dictionary type> <user defined type>

DATA <varname> LIKE <data object>

TYPE+ 型態LIKE+ 資料 ( 變數 ) 物件

Page 14: ABAP Basic Concept (1)

C-14ABAP 程式設計 楊子青

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'

.

Page 15: ABAP Basic Concept (1)

C-15ABAP 程式設計 楊子青

練習 A

宣告單值變數 ( 程式名稱 zyyxx_ex_a)– 定義一個使用者自訂型態 MY_TYPE ,且

MY_TYPE 的型態為 C 、長度為 10

– 宣告一個變數 MY_DATA1 ,其型態為 MY_TYPE 的型態,並在宣告時給初始值。

– 宣告一個變數 MY_DATA2 ,其型態為MY_DATA1 的型態,宣告後再設定此變數的值。

– 將以上兩變數印出。

Page 16: ABAP Basic Concept (1)

C-16ABAP 程式設計 楊子青

練習 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 按鈕看程式執行結果

Page 17: ABAP Basic Concept (1)

C-17ABAP 程式設計 楊子青

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> 與

之對應

Page 18: ABAP Basic Concept (1)

C-18ABAP 程式設計 楊子青

Work Area (Cont.)

複製資料:– MOVE-CORRESPONDING <wa1> TO <wa2>

PS: 二者皆有之欄位才會進行複製

Page 19: ABAP Basic Concept (1)

C-19ABAP 程式設計 楊子青

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.

Page 20: ABAP Basic Concept (1)

C-20ABAP 程式設計 楊子青

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.

Page 21: ABAP Basic Concept (1)

C-21ABAP 程式設計 楊子青

練習 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 變數

– 將以上兩變數的所有欄位值印出。

Page 22: ABAP Basic Concept (1)

C-22ABAP 程式設計 楊子青

練習 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.

Page 23: ABAP Basic Concept (1)

C-23ABAP 程式設計 楊子青

練習 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.

Page 24: ABAP Basic Concept (1)

C-24ABAP 程式設計 楊子青

3.3 Internal Table 與 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/ Non-unique

Unique

Page 25: ABAP Basic Concept (1)

C-25ABAP 程式設計 楊子青

(1) Internal Table Type 型態定義

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.

Page 26: ABAP Basic Concept (1)

C-26ABAP 程式設計 楊子青

(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.

Page 27: ABAP Basic Concept (1)

C-27ABAP 程式設計 楊子青

Internal Table with Header Lines DATA <itab> TYPE <itabtype> WITH HEADER LINE

DATA <itab> TYPE <itabtype>

Header Line <itab>

Internal Table <itab>

Work Area <wa>

Internal Table <itab>

Page 28: ABAP Basic Concept (1)

C-28ABAP 程式設計 楊子青

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.

Page 29: ABAP Basic Concept (1)

C-29ABAP 程式設計 楊子青

(3) Internal Table 操作

INDEX ?

Page 30: ABAP Basic Concept (1)

C-30ABAP 程式設計 楊子青

Internal Table 操作 (Cont.) 列印 Table 中之所有 records

LOOP AT TABLE 名稱 WRITE:/ TABLE 名稱 - 欄位ENDLOOP

補充– SKIP 跳一行– ULINE 畫一條線– WRITE: / 由新的一行開始列印

Page 31: ABAP Basic Concept (1)

C-31ABAP 程式設計 楊子青

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.

Page 32: ABAP Basic Concept (1)

C-32ABAP 程式設計 楊子青

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.

Page 33: ABAP Basic Concept (1)

C-33ABAP 程式設計 楊子青

練習 C

使用 Internal Table 變數 ( 程式名稱zyyxx_ex_c)– 繼續前兩頁實例,將 PERSON1 及

PERSON2 分別新增於 ITAB2 表格中。– PERSON3 插入於 ITAB2 表格之第二筆記錄。

– 跳一行,再印出一條線。– 印出『 INSERT TABLE: 』之標題。– 將 ITAB2 的所有記錄之各個欄位全部印出。

Page 34: ABAP Basic Concept (1)

C-34ABAP 程式設計 楊子青

練習 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.

Page 35: ABAP Basic Concept (1)

C-35ABAP 程式設計 楊子青

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 處在

第幾層 )