ABAP-02 DATA/TYPE/WA/ITAB | |
1. 概論 | |
ABAP語法的結尾為 . 備註為"或* | |
| |
2. 變數的宣告(data) | DATA : <變數名>(<長度>) TYPE <數據類型> VALUE <預設給定值> . DATA后的':'為宣告多個變數時用的,若只是宣告一個變數可以不用 |
範例:宣告一變數名為CHAR1長度20/型態為字元/預設值為'我愛地球' | DATA : CHAR1(20) TYPE C VALUE '我愛地球' . |
範例:宣告一變數名為CHAR1長度20/型態為字元/預設值為'蔚然天空',並宣告另一變數CHAR2,其相關宣告皆同CHAR1 | DATA : CHAR1(20) TYPE C VALUE '我愛地球' , CHAR2 LIKE CHAR1 . |
3. 常數的宣告(CONSTANT) | |
常數是指程式一但於執行期間,此數值皆不能被改變,並於后續可被引用 | |
範例:宣告一變數名為CON長度20/型態為I/預設值為'3' | DATA : CON(20) TYPE I VALUE 3 . |
4. 自行定義變數型態(TYPES) | |
ABAP預設定義的變數型態有8種,若不符使用時可自行定義,甚至可以自行定義一串變數型態的組合,稱為STRUCTURE(結構) | |
範例:自定二個變數型態,一為NAME,一為TEAMS,宣告二個變數名為PLAYER及NICKNAME/型態為先前自定義的變數型態NAME/預設值為'蔚然天空' ,宣告二個常數名為TEAM1及TEAM2/型態為先前自定義的變數型態TEAMS/預設值為'蔚然天空' | TYPES : NAME(10) TYPE C, TEAMS(20) TYPE C . DATA : PLAYER TYPE NAME VALUE '蔚然天空', NICKNAME LIKE PLAYER . CONSTANT : TEAM1 TYPE TEAMS VALUE '甲組' , TEAM2 TYPE TEAMS VALUE '乙組' . |
範例:定義一結構型態EMP,各欄位型態同USER21的相對應欄位 | TABLES : USER21 . TYPES : BEGIN OF EMP, NAME LIKE USER21-BNAME, TELNUM LIKE USER21-PERSNUMBER, ADDR LIKE USER21-ADDRNUMBER, END OF EMP. |
5. WORKING AREA的宣告 | |
WORKING AREA是屬於STRUCTURE的一種,其只有存單一筆RECORD,其宣告同一般變數宣告方式 | |
DATA : BEGIN OF <WA名稱>, TYPE <數據類型> VALUE <預設值> , TYPE <數據類型> VALUE <預設值> , END OF <WA名稱> . | |
範例:宣告一WA名為USERINF,其包含三個欄位工號型態C/姓名型態為C/電話型態N | DATA : BEGIN OF USERINF, SID(10) TYPE C, "工號 NAME(10) TYPE C, "姓名 TEL(10) TYPE N, "電話 END OF USERINF . |
範例:WA也可以用LIKE的方式 | DATA : USER2 LIKE USERINF . |
範例:宣告一WA名為EMP,其繼承了USERINF的三個欄位,並再加入了生日型態D/地址型態為C | DATA : BEGIN OF EMP, INCLUDE STRUCTURE USERINF, BIRDATE TYPE D, ADDR(300) TYPE C, END OF EMP. |
6. INTERNAL TABLE的宣告 | |
INTERNAL TABLE亦是屬於STRUCTURE的一種,其存有多筆RECORD(WA是存有單一筆record的structure) 可分類為STANDARD/SORTED/HASHED三種類型 UNIQUE/NON-UNIQUE=>指定key值,只能用於SORTED及HUSHED的TABLE上 WITH HEADER LINE=>此INTERNAL TABLE包含了一個WA INITIAL SIZE n=>指定一開始的internal table的大小 宣告的語法非常彈性,所以很容易形成WA及ITAB的混淆(原則上wa只有一筆資料) | |
以下的範例是具有連貫性 | |
範例:自行定義一個結構型態,其可能為WA或ITAB | TABLES : USER21 . *如下定義了一個結構型態叫EMP,這個結構有可能是WA或是ITAB TYPES : BEGIN OF EMP, "此型態為WA NAME LIKE USER21-BNAME, TELNUM LIKE USER21-PERSNUMBER, ADDR LIKE USER21-ADDRNUMBER, END OF EMP. TYPES : BEGIN OF EMP OCCURS 0, "此型態為ITAB NAME LIKE USER21-BNAME, TELNUM LIKE USER21-PERSNUMBER, ADDR LIKE USER21-ADDRNUMBER, END OF EMP. |
範例:如下宣告一個STNADARD 的ITAB名叫EMPTAB,起始大小為10,並且具有HEADER LINE,其意義為先將ITAB的結構先定義為一個型態,之后用宣告變數的方式,將某個變數的型態等同於此自行定義的結構,以省掉用宣告去指定每一個ITAB中欄位的定義 | DATA : EMPTAB TYPE STANDARD TABLE OF EMP INITIAL SIZE 10 WITH HEADER LINE . |
範例:如下宣告一個STANDARD的ITAB名叫EMPTAB2,其架構相似於EMPTAB(此為ITAB),且不具有HEADER LINE | DATA : EMPTAB2 LIKE STANDARD TABLE OF EMPTAB . |
範例:如下宣告一個ITAB名叫EMPTAB3,其架構相似於EMPTAB,因EMPTAB為STANDARD,故EMPTAB3會承接此屬性,並其指定起始大小為10且具有HEADER LINE(OCCURS 等於指定了INITIAL SIZE及WITH HEADER LINE) | DATA : EMPTAB3 LIKE EMPTAB OCCURS 10 . |
範例:如下宣告一個SORTED的ITAB名叫EMPTAB4,其key值為NAME這個欄位,並指定起始大小為10及具有HEADER LINE | DATA : EMPTAB4 LIKE SORTED TABLE OF EMPTAB WITH UNIQUE KEY NAME INITIAL SIZE 10 WITH HEADER LINE. |
範例:如下宣告一個HUSHED TABLE名叫EMPTAB5,其架構相似於EMPTAB,其沒有指定key值並具有HEADER LINE | DATA : EMPTAB5 LIKE HUSHED TABLE OF EMPTAB WITH NON-UNIQUE WITH HEADER LINE. |
| |
7. WA/ITAB給值的方式 | WA可直接給值 ITAB若有HEADER LINE(可當做一個WA)可直接把值給WA,再APPEND到ITAB的最后一筆,若沒有HEADER LINE,則需借用其他的WA,把值給這個WA,再APPEND到ITAB的最后一筆,或是用OPENSQL直接INTO到ITAB中 |
範例:定義一個WA后,直接給定值 | DATA : BEGIN OF USERINF, SID(10) TYPE C, NAME(20) TYPE C, TEL(20) TYPE N, END OF USERINF . DATA : USER2 LIKE USERINF . USERINF-SID = '10913060'. USERINF-NAME = 'SKYSTUDIO'. USERINF-TEL = ' 04-22223333 '. USER2 = USERINF . WRITE : USER2, USERINF-SID . *輸出結果 10913060 SKYSTUDIO 04-22223333 10913060 |
範例:APPEND INTO ITAB宣告一個ITAB WITH HEADER LINE,故可以直接給值並放到ITAB的最后一筆 | TABLES : USER21 . DATA : BEGIN OF EMP OCCURS 0, NAME LIKE USER21-BNAME, TELNUM LIKE USER21-PERSONNUMBER, ADDR LIKE USER21-ADDRNUMBER, END OF EMP. EMP-NAME='SKYSTUDIO' . EMP-TELNUM='04-22223333' . EMP-ADDR='HSINCHI' . APPEND EMP. |
範例:ITAB沒有HEADER LINE所以需靠一個外部的WA把值並放到ITAB的最后一筆 | TABLES : USER21 . DATA : BEGIN OF EMPTAB, "此為WA NAME LIKE USER21-BNAME, TELNUM LIKE USER21-PERSONNUMBER, ADDR LIKE USER21-ADDRNUMBER, END OF EMPTAB. DATA : EMP LIKE STANDARD TABLE OF EMPTAB. "此為ITAB並可改寫為 EMP TYPE STANDARD TABLE OF EMPTAB EMPTAB-NAME='SKYSTUDIO' . EMPTAB-TELNUM='04-22223333' . EMPTAB-ADDR='HSINCHI' . APPEND EMPTAB INTO EMP . "將WA的值寫到ITAB |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
我的網誌清單
20120312
ABAP-02 DATA/TYPE/WA/ITAB
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言