[轉貼] ABAP基礎知識學習

ABAP基礎知識學習 

資料類型

C :字串

D :日期型 格式為 YYYYMMDD 例:’1999/12/03′

F : 浮點數 長度為8

I :整數

N :數值組成的字串 如:011,’302′

P : PACKED數 用於小數點數值 如:12.00542

T : 時間 格式為:HHMMSS 如:’14:03:00′

X : 16進制數 如:’1A03′

*————————————————————————————-*

變數宣告



DATA [] [][decimals]

變數名稱

變數類型 及 長度

初值

小數位數



exp:

DATA : COUNTER TYPE P DECIMALS 3.

NAME(10) TYPE C VALUE ‘DELTA’.

S_DATE TYPE D VALUE ‘19991203’.

exp:

DATA : BEGIN OF PERSON,

NAME(10) TYPE C,

AGE TYPE I,

WEIGHT TYPE DECIMALS 2,

END OF PERSON.

另外,有關DATA宣告的指令還有: CONSTANTS(宣告常數)、STATICS(臨時變數宣告).

exp:

CONSTANTS PI TYPE P DECIMALS 5 VALUE ‘3.14159’.

STATICS 敘述

宣告的變數僅在目前的程式中使用, 結束後會自動釋放 

語法: 

STATICS [] [] []



系統專用變數說明

系統內部專門創建了SYST這個STRUCTURE,裏面的欄位存放系統變數,常用的系統變數有:

SY-SUBRC : 系統執行某指令後,表示執行成功與否的變數,’0′ 表示成功

SY-UNAME: 當前使用者登入SAP的USERNAME;

SY-DATUM: 當前系統日期;

SY-UZEIT: 當前系統時間;

SY-TCODE: 當前執行程式的Transaction code

SY-INDEX : 當前LOOP循環過的次數

SY-TABIX: 當前處理的是internal table 的第幾筆

SY-TMAXL: Internal table的總筆數

SY-SROWS: 螢幕總行數;

SY-SCOLS: 螢幕總列數;

SY-MANDT: CLIENT NUMBER

SY-VLINE: 畫豎線

SY-ULINE: 畫橫線



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敘述則是用

在指定資料型態。



*————————————————————————————-*

輸出



一. WRITE 語句

ABAP/4用來在螢幕上輸出資料的指令是WRITE指令,例如:

WRITE: ‘USER NAME IS:’, SY-UNAME.

二. 指定螢幕輸出位置

指定輸出位置的語句格式為:

WRITE: [AT] [ / ] [] [()] 資料項 []

其中: / : 在下一行輸出

: 指定輸出的行號;

():指定輸出位數(長度)

: 指定顯示格式參數,參數有:

LEFT-JUSTIFIED 資料*左對齊

CENTERED 資料*中間對齊

RIGHT-JUSTIFIED 資料*右對齊

UNDER 正對在資料項的下麵顯示

NO-GAP 緊接著顯示,不留空格

USING EDIT MASK : 使用內嵌子元顯示, 如 12:03:20

USING NO EDIT MASK: 不使用內嵌子元

NO-ZER 數字前面 0 的部分不顯示

NO-SIGN: 不顯示正負號

DECIMALS : 顯示 位小數

EXPOENT : F(浮點數)指數的值

ROUND : 四捨五入至小數點後位

CURRENCY : 幣別顯示

DD/MM/YY : 日期顯示格式

MM/DD/YY: 

YY/MM/DD: 

YY/DD/MM

MM/DD/YYYY:

DD/MM/YYYY

YYYY/MM/DD:

YYYY/DD/MM:

例如1: WRITE: /10(6) ‘ABCDEFGHIJK’.

輸出結果為: ABCDEF

例如2: DATA: X TYPE I VALUE ’11:20:30′,

A(5) TYPE C VALUE ‘AB CDE’.

WRITE: / X USING EDIT MASK ‘__:__:__’.

WRITE: / X USING EDIT MASK ‘$___,___’.

WRITE: / Y NO-GAP.

輸出結果為:

11:20:30

$112,030

ABCDEF



例如3: DATA: LEN TYPE I VALUE 10,

POS TYPE I VALUE 11,

TEXT(10) VALUE ‘1234567890’

WRITE ‘The text ———— appears in the text.’.

WRITE AT POS(LEN) TEXT.



WRITE TO 語句的基本 形式

要將值(文 字)或源字 段內容寫入 目標欄位, 可以使用 WRITE TO 語句:

語法

WRITE TO [].



DATA: NUMBER TYPE F VALUE ‘4.3’,

TEXT(10),

FLOAT TYPE F,

PACK TYPE P DECIMALS 1.

WRITE NUMBER.

WRITE NUMBER TO TEXT EXPONENT 2.

WRITE / TEXT.

WRITE NUMBER TO FLOAT.

WRITE / FLOAT.

WRITE NUMBER TO PACK.

WRITE / PACK.

MOVE NUMBER TO PACK.

WRITE / PACK.



exp:

DATA: NAME(10) VALUE ‘SOURCE’,

SOURCE(10) VALUE ‘Antony’,

TARGET(10).



WRITE (NAME) TO TARGET.

WRITE: TARGET.



exp :



DATA: COUNTER TYPE I.

COMPUTE COUNTER = COUNTER + 1.

COUNTER = COUNTER + 1.

ADD 1 TO COUNTER.

在此,三條 運算語句進 行相同算術 運算



輸出螢幕上 的線和空行



用下列語法 ,可以在輸 出螢幕上生 成水平線:

語法

ULINE [AT [/][][()]].

它等同於

WRITE [AT [/][][()]] SY-ULINE.

AT 後的格式規 範,與在 在螢幕上定 位元 WRITE 輸出 (頁 28) 中為 WRITE 語句說明的 格式規範完 全一樣。

如果沒有格 式規範,系 統則開始新 的一行,並 用水平線填 充該行。否 則,只按指 定輸出水準 線。

生成水平線 的另一種方 法,是在 WRITE 語句中鍵入 恰當數量的 連字元,如 下所示:

WRITE [AT [/][][()]] ‘—–…’.

垂直線

用下列語法 ,可以在輸 出螢幕上生 成垂直線:

語法

WRITE [AT [/][]] SY-VLINE.



WRITE [AT [/][]] ‘|’.

空行

用下列語法 ,可以在輸 出螢幕上生 成空行:

語法

SKIP [].

該語句從當 前行開始, 在輸出螢幕 上生成 個空行。如 果沒有指定 的值,就輸 出一個空行 。

要將輸出定 位元在螢幕的 指定行上, 請使用:

語法

SKIP TO LINE .

該語句允許 將輸出位置 向上或向下 移動。





四. 顯示圖示:

語法: WRITE: AS SYMBOL.

WRITE: AS ICON.

例如: INCLUDE .

INCLUDE .

WRITE: / ‘Phone symbol:’, SYM_PHONE AS SYMBOL.

WRITE: / ‘Alarm Icon:’, ICON_VOICE_OUTPUT AS ICON.

要查看系統所提供有那些符號及圖示,可選擇’EDIT’下的’Insert Statement’,選擇’Write’,接下來選擇要查看的群組,如SYMBOL 或ICON, 接下來按’Display’即可.

*————————————————————————————-*



一. Internal Table 的宣告

ABAP/4中的Internal Table是一種Data Structure,類似於其他語言中的STRUTURE,它可以由幾個不同類型的欄位(field)組成,用來表示具有不同屬性的某一事物,單獨一筆資料表示某個事物,多筆資料表示具有相同屬性的多個事物.



Internal table 的定義有以下幾種格式:

格式一. DATA: BEGIN OF OCCURS ,

TYPE ,

[ TYPE ,

TYPE ,

… ]

END OF .

語法:

DATA OCCURS [WITH HEADER LINE]

Example:

DATA VECTOR TYPE I OCCURS 10 WITH HEADER LINE.



格式二. TYPES: BEGIN OF ,

TYPE ,

[ TYPE ,

TYPE ,

分類未分類

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料