類型html |
說明node |
C數據庫 |
|
Nexpress |
0到9之間字符組成的數字字符串函數 |
Dspa |
日期格式必須爲 YYYYMMDDcode |
Thtm |
格式爲 24-hour的 HHMMSS對象 |
Iblog |
-2.147.483.648 to +2.147.483.647 |
F |
小數位最大能夠到17位,便可精確到小數點後17位 |
P |
兩個數字位壓縮後才佔一個字節,因爲0-9的數字只須要4Bit位,因此一個字節實質上容許存儲二位數字,這就是P數據類型爲壓縮數據類型的由來。並借用半個字節來存儲小數點位置、正號、負號相關信息 |
X |
十六進制字符 0-9, A-F具體的範圍爲:00~FF 類型X是十六進制類型,可表示內存字節實際內容,使用兩個十六制字符表示一個字節中所存儲的內容。但直接打印輸出時,輸出的仍是賦值時字面意義上的值,而不是Unicode解碼後的字符 若是未在 DATA 語句中指定參數<length>,則建立長度爲 1 注:若是值是字母,則必定要大寫 |
語法示例:
DATA: number(16) TYPE p DECIMALS 14 VALUE '12345678901234567.89012345678901'.
"16 * 2 = 32表示了整個字面意義上容許的最大字面個數,而14表示的是字面上小數點後面容許的最大小數位,而不是指14個字節,只有這裏定義時的16才表示16個字節
predefined ABAP types
Type |
Length |
Standard length |
Description |
b |
1 Byte |
|
1 byte integer (internal) |
c |
1 to 65,535 characters |
1 character |
Text field |
cursor |
as i |
as i |
Database cursor |
d |
8 characters |
|
Date field |
f |
8 bytes |
|
Floating point number |
i |
4 bytes |
|
4 byte integer |
n |
1 to 65,535 characters |
1 character |
Numeric text |
p |
1 to 16 bytes |
8 bytes |
Packed number |
string |
variable |
|
Text string |
s |
2 bytes |
|
2 byte integer (internal) |
t |
6 characters |
|
Time field |
x |
1 to 65,535 bytes |
1 byte |
Byte field(hexadecimal) |
xstring |
variable |
|
Byte string |
數據字典預置類型與ABAP類型對應關係。
數據字典預置類型 |
ABAP類型 |
運行長度 |
說明 |
ACCP |
N(6) |
6 |
會計計算週期 |
CHAR |
C(n) |
1-255 |
字符 |
CLNT |
C(3) |
3 |
集團,數據區域代碼 |
CUKY |
C(5) |
5 |
貨幣代碼 |
CURR(n,m) |
P((n+1)/2)DECIMALm |
42736 |
貨幣金額 |
DATS |
D(8) |
8 |
日期 |
DEC n,m |
P((n+1)/2)DECIMALm |
n(1-31)m(1-17) |
數值計算 |
FLTP |
F(8) |
18 |
浮點數 |
INT1 |
X(1)(類型b) |
3 |
單字節整形數 |
INT2 |
X(2)(類型s) |
5 |
雙字節整形數 |
INT4 |
X(4)(類型i) |
10 |
四字節整形數 |
LANG |
C(1) |
內部1位外部2位 |
語言代碼 |
LCHR |
C(n) |
256-最大值 |
長字符 |
LRAW |
X(n) |
256-最大值 |
長位字串 |
NUMC n |
N(n) |
1-255 |
數值文字 |
PREC |
X(2) |
16 |
精確度 |
QUAN n,m |
P((n+1)/2)DECIMALm |
42736 |
數量 |
RAW n |
X(n) |
1-255 |
位字串 |
TIMS |
T(6) |
6 |
時間 |
VARC n |
C(n) |
255-最大值 |
長字符(僅3.0前可用) |
STRING |
STRING |
1-最大值 |
字符串 |
RAWSTRING |
XSTRING |
1-最大值 |
位字符串 |
UNIT |
C(n) |
2~3 |
單位 |
SAP系統變量
SY-SUBRC: 系統執行某指令後,表示執行成功與否的變量,’0’ 表示成功
SY-DBCNT: 在open SQL語句中,表示執行影響到的數據條數
SY-DBLNT: 被處理過的記錄的筆數
SY-UNAME: 當前使用者登入SAP的USERNAME;
SY-DATUM: 當前系統日期;
SY-UZEIT: 當前系統時間;
SY-TCODE: 當前執行程序的Transaction code
SY-INDEX :
SY-TABIX:
SY-TMAXL: Internal table的總筆數
SY-SROWS: 屏幕總行數;
SY-SCOLS: 屏幕總列數;
SY-MANDT: 當前系統編號(CLIENT NUMBER)
SY-VLINE: 畫豎線
SY-ULINE: 畫橫線
SY-PAGNO: 當前頁號
SY-LINSZ: 當前報表寬度
SY-LINCT: 當前報表長度
SPACE: 空字符串
SY-LSIND: 列表索引頁
SY-LISTI: 上一個列表的索引
SY-LILLI: 絕對列表中選定行的行號
SY-CUROW: 屏幕上的行
SY-CUCOL: 光標列
SY-CPAGE: 列表的當前顯示頁
SY-STARO:真實行號
SY-LISEL: 選擇行的內容,長度爲255
SY-LINNO: 當前行
q 系統內部有一個專門存放系統變量的結構SYST,其中最經常使用的系統變量有:
SY-SUBRC: 系統執行某指令後,表示執行成功與否的變量,’0’ 表示成功
SY-UNAME: 當前使用者登入SAP的USERNAME;
SY-DATUM: 當前系統日期;
SY-DATAR:若是屏幕上至少有一個輸入字段的值被用戶或其餘數據傳輸所更改, 值爲X。但若是沒有修改,回車後的值是空。
SY-UZEIT: 當前系統時間;
SY-TCODE: 當前執行程序的Transaction code
SY-REPID: ABAP 程式名,目前的主程式
SY-DYNNR: 畫面號
SY-CPROG: ABAP 程式名
SY-SYSID: R/3 系統,R/3 系統名稱
SY-UCOMM: PAI 驅動的功能代碼,通常用來參照定義變量
SY-INDEX(DO) : 當前LOOP循環過的次數
SY-TABIX(LOOP READ): 當前處理的是internal table 的第幾筆
sy-langu:記錄登錄系統的語言。
|
l 變量以字母做爲首字符,長度不超過30字節(SPACE是預約義字段constant with C)。
l 若是沒有指定類型,默認使用類型C。
l LIKE參數,既能夠參照內部字段,也能夠參照數據庫中的字段。只要在程序的一個地方中數據屬性發生改變,其餘使用LIKE參數定義的數據也發生改變。
l 透明表(還有其它數據詞典中的類型,如結構)便可看做是一種類型,也可看做是對象,因此便可使用TYPE,也可使用LIKE。
TYPES:定義數據類型
- 數據類型是純粹的說明。
- 沒有與數據類型相關聯的內存。
- 數據類型描述數據對象的技術屬性。
- 數據類型是數據對象的屬性並與數據對象聯繫緊密。
DATA:聲明數據對象(變量、常量)
- 數據對象是程序在運行時使用的物理單元。
- 每一個數據對象都有分配給它的特定數據類型。
- 每一個數據對象佔據一些內存空間。
- ABAP/4 根據數據對象的數據類型處理數據對象。
l TABLES: spfli.
DATA spfli TYPE spfli.
以上兩個語句等價。即在定義內存變量時,能夠將透明表當作結構體來使用
l CONSTANTS 利用<value>參數指定的初始值,在程序的執行期間不能更改。
DATA 語句 |
用於建立變量 |
CONSTANTS 語句 |
用於建立常量(必須賦值),數字常量有數據類型P與I,文本常量有C與N。 |
STATICS語句 |
用於建立變量,這些變量在程序運行期間一直存在,但僅在過程當中可見 |
TABLES語句 |
用於建立表工做區 |
TYPES 語句 |
用於建立用戶定義的數據類型 |
語法示例:
DATA : BEGIN OF address2,
street(20) TYPE c,
city(20) TYPE c,
END OF address2.
DATA obj4 TYPE STANDARD TABLE OF address2."這裏使用的實質上是詞典中的類型address2
DATA obj5 LIKE STANDARD TABLE OF address2."這裏使用是的上面定義的變量address2
l Value參數賦予字段相應的初始值。
l WRITE {source|(source_name)} TO destination.
The data objects source_name and destination must be character type and flat.
語法示例:
DATA: date_short TYPE c LENGTH 8,
date_long TYPE c LENGTH 10,
date_mask TYPE c LENGTH 8.
WRITE sy-datum TO: date_short,
date_long,
date_mask DD/MM/YY.
WRITE ICON_OKAY AS ICON TO PUBU2. "給PUBU2按鈕添加圖標,而且在給按鈕賦值以前,不然將會把文字替換。
l MOVE source {TO|?TO} destination.
l destination1 = destination2 = ... = destination = source.
l MOVE-CORRESPONDING struc1 TO struc2.
l UNPACK source TO destination.
For source, the data type p of length 16 without decimal places is expected. The data type of destination must be character-type and flat.
l READ LINE line_num FIELD VALUE num.
CLEAR dobj [ {WITH val [IN {BYTE|CHARACTER} MODE] } 全部的space被var替代
| {WITH NULL} ]. 若是使用有表頭行的內表,CLEAR 僅清除表格工做區域,CLEAR dobj[] 都清除
REFRESH itab.清除內表全部行
FREE dobj.」內存釋放
l
l CONCATENATE
{dobj1 dobj2 ...}|{LINES OF itab}
INTO result
[IN {BYTE|CHARACTER} MODE]
[SEPARATED BY sep] 」用sep分割
l SPLIT dobj AT sep INTO
{ {result1 result2 ...} | {TABLE result_tab} }
[IN {BYTE|CHARACTER} MODE].
[RESPECTING BLANKS].「對於c, d, n, t類型的字符串有一個RESPECTING BLANKS選項可以使用,表示尾部空格也會保留。
l FIND [{FIRST OCCURRENCE}|{ALL OCCURRENCES} OF] pattern
IN [section_of] dobj 「pattern:{[SUBSTRING] sub_string} | {REGEX regex}」 sub_string in pattern is an empty string or is of type c, d, n, or t and only contains empty characters, regex in pattern contains a regular expression that is the same as the empty character string,
[IN {BYTE|CHARACTER} MODE]
[{RESPECTING|IGNORING} CASE]
[MATCH COUNT mcnt] 「成功匹配次數
{ {[MATCH OFFSET moff] [MATCH LENGTH mlen]} 」最後一次總體匹配到的串(總體串,最外層分組,而不是指正則式最內最後一個分組)起始位置與長度
|[RESULTS result_tab|result_wa]}result_tab接收全部匹配結果,result_wa只能接收最後一次匹配結果
[SUBMATCHES s1 s2 ...]. 一般與前面的MATCH OFFSET/ LENGTH一塊兒使用。只會接收使用括號進行分組的子組。若是變量s1 s2 ...比分組的數量多,則多餘的變量被initial;若是變量s1 s2 ...比分組的數量少,則多餘的分組將被忽略;且只存儲第一次或最後一次匹配到的結果
l REPLACE [{FIRST OCCURRENCE}|{ALL OCCURRENCES} OF] pattern
IN [section_of] dobj WITH new
[IN {BYTE|CHARACTER} MODE]
[{RESPECTING|IGNORING} CASE]
[REPLACEMENT COUNT rcnt]
{ {[REPLACEMENT OFFSET roff] [REPLACEMENT LENGTH rlen]}
| [RESULTS result_tab|result_wa] }.
l SHIFT dobj {BY num PLACES} | {UP TO sub_string} 「sub_string開始
[LEFT|RIGHT][CIRCULAR] 」 CIRCULAR:將移出的字符串放在左邊或者左邊
{ {LEFT DELETING LEADING}|{RIGHT DELETING TRAILING} } pattern
執行結果返回給系統變量SY-SUBRC,若執行成功時,返回值爲"0",假若子串與原字符串不匹配,返回值爲"4"。
l CONDENSE text [NO-GAPS]. 若是是C類型只去掉前面的空格(由於是定長,即便後面空格去掉了,左對齊時後面會補上空格),若是是String類型,則後面空格也會被去掉;字符串中間的多個連續的空格使用一個空格替換(String類型也是這樣);NO-GAPS:字符串中間的全部空格都也都會去除(String類型也是這樣);空格去掉後會左對
l CONVERT TEXT text INTO SORTABLE CODE hex. 數據對象文本(X)的內容被轉換爲可排序的字節序列,結果被分配給變量hex;數據對象文本保持不變,若hex是xstring類型,則其長度將自動調整。
l TRANSLATE text {TO {UPPER|LOWER} CASE}
| {USING pattern}.
l SEARCH <c> FOR <str>.
語法示例:
DATA text TYPE string.
text = `Barbcbdbarb`.
TRANSLATE text USING 'rVcX'. 」BaVbXbdbaVb
TRANSLATE text TO UPPER CASE. 」BABVXBDBAVB
WRITE:/ text.
PARAMETERS {para[(len)]}|{para [LENGTH len]}
[type_options]
[screen_options]
[value_options]
[ldb_options].
l type_options:
{ TYPE type [DECIMALS dec] } | { LIKE dobj } |{ LIKE (name)}.
TYPE type:參照某一類型對象定義PARAMETERS。
...DECIMALS dec:定義小數位,對輸入參數自動格式化,該語法只對P類型有效(參數某一類型定義關鍵字TYPE)。
...LIKE dobj:參照某一字典對象定義PARAMETERS。
l screen_options:
{ {[OBLIGATORY|NO-DISPLAY] [VISIBLE LENGTH vlen]}
| {AS CHECKBOX [USER-COMMAND fcode]}
| {RADIOBUTTON GROUP group [USER-COMMAND fcode]}
| {AS LISTBOX VISIBLE LENGTH vlen [USER-COMMAND fcode]
[OBLIGATORY]} }
[MODIF ID modid].
...MEMORY ID pi:將PARAMETERS存儲在SAP內存,參數名長度不能超過三位。 ...NO-DISPLAY:將PARAMETERS設置爲隱藏,不會的屏幕上輸出。
...OBLIGATORY:限制該PARAMETERS爲必填,不然會提示輸入。...AS CHECKBOX:建立CHECKBOX對象。
...RADIO BUTTON GROUP radi:建立(RADIO)單選框。...VISIBLE LENGTH vlen:定義顯示長度。
...USER-COMMAND ucom:爲建立對象分配對象名,該值保存在內表中可供其它對象操做。 ...AS LISTBOX VISIBLE LENGTH vlen:建立一個下拉框,並指定長度.
l value_options
... [DEFAULT val]
[LOWER CASE]
[MATCHCODE OBJECT search_help]
[MEMORY ID pid]
[VALUE CHECK] ... . 「若要使值表檢查生效,則首先須要將此 Domain 引用到表字段,再對此表字段經過 按鈕進行外鍵分配,而且外鍵必定是來自的值表的主鍵,最後使用 PARAMETERS 定義屏幕參數時要參照此表字段,
與AS CHECKBOX, RADIOBUTTON, or NO-DISPLAY 不能同時使用...DEFAULT f:定義默認值。 ...LOWER CASE:輸入值中不容許輸入小寫字符,不然會自動轉換爲大寫。
l ldb_options
... FOR {TABLE|NODE} node
[HELP-REQUEST]
[VALUE-REQUEST]
[AS SEARCH PATTERN] ... .
... ON <field>:該語法用於控制屏幕元素輸入時的遇錯處理,檢查具體輸入字段(SELECTION-OPTIONS或PARAMETERS)是否完整或正確,若輸入有錯或不知足條件,其它屏幕元素會變成灰色,不接受輸入直到該字段輸入正確爲止。
...ON VALUE-REQUEST FOR <field low/high>:SELECT-OPTIONS按選擇幫助<F4>鍵時觸發該事件。
...ON HELP-REQUEST FOR <field low/high>:SELECTION-OPTIONS按選擇幫助<F1>鍵時鍵發該事件。
LISTBOX下拉列表
FUNCTION 」F4IF_INT_TABLE_VALUE_REQUEST」
FUNCTION 」VRM_SET_VALUES」.
語法示例:
PARAMETERS: P1 RADIOBUTTON GROUP GRP1 DEFAULT 'X',
P2 RADIOBUTTON GROUP GRP1.
FIELD-SYMBOLS <fs> { typing | STRUCTURE struc DEFAULT dobj }.
l FIELD-SYMBOLS:<fs>.
l FIELD-SYMBOLS <fs> TYPE itab."將<fs>定義成了具體限定類型
ASSIGN ... TO <fs>:將某個內存區域分配給字段符號,這樣字段符號就表明了該內存區域
l ASSIGN name TO <fs>."結果是<fs>與name變量等同"靜態分配:編譯時就知道要分配的對象
l ASSIGN (name) TO <fs>."結果是是<fs>的值爲str變量值 "經過變量名動態訪問變量
l UNASSIGN:該語句是初始化<FS>字段符號,執行後字段符號將再也不引用內存區域
l CLEAR:與UNASSIGN不一樣的是,只有一個做用就是初始化它所指向的內存區域,而不是解除分
語法示例:
DATA: BEGIN OF line,
col1 TYPE i VALUE '11',
col2 TYPE i VALUE '22',
col3 TYPE i VALUE '33',
END OF line.
DATA comp(5) VALUE 'COL3'.
FIELD-SYMBOLS: <f1>, <f2>, <f3>.
ASSIGN line TO <f1>.
ASSIGN comp TO <f2>.
"還能夠直接使用如下的語法訪問其餘程序中的變量
ASSIGN ('(ZJDEMO)SBOOK-FLDATE') TO <fs>.
"經過索引動態的訪問結構成員
ASSIGN COMPONENT sy-index OF STRUCTURE <f1> TO <f3>.
"經過字段名動態的訪問結構成員
ASSIGN COMPONENT <f2>OF STRUCTURE <f1> TO <f3>.
... func( arg ) ...
ADD 10 to int.
SUBSTRACT 10 from int.
MULTIPLY int by 10.
DIVIDE int by 10.
語法示例:
DATA: i1 TYPE I,i2 TYPE I,i3 TYPE I,
f1 TYPE p DECIMALS 1, f2 TYPE p VALUE '2.3' DECIMALS 1,f3 TYPE p DECIMALS 1,
word1 TYPE string VALUE 'ABCD',word2 TYPE string VALUE 'EFG',xstr TYPE XSTRING.
f1 = ( i1 + EXP( f2 ) ) * i2 / SIN( 3 - i3 ).
COMPUTE f3 = SQRT( SQRT( ( i1 + 12 ) * i3 ) + f2 ).」注意符號間間距
i1 = STRLEN( word1 ) + STRLEN( word2 ).
WRITE:/ i1,i2,i3,f1,f2,f3.
DESCRIBE TABLE itab[KIND knd][LINES lin][OCCURS n].
KIND knd :T 時表明標準表,爲S時表明排序表,爲H時表明哈希表
LINES lin 內表表行數量
OCCURS n在內表用選項initial size 或者老式的選項ocurs建立期間決定內表所須要的初始化內存大小
DESCRIBE DISTANCE
DESCRIBE DISTANCE BETWEEN dobj1 AND dobj2 INTO dst
IN {BYTE|CHARACTER} MODE.
dobj1 and dobj2兩個變量地址起始位置的距離