ABAP基础类型温习
.P
???????聲明:?TYPES mount??TYPE p length 5 DECIMALS 2.
又稱為壓縮類型.
值范圍1~15整型數字(除去最后的符號位).
若在沒有定義長度的情況下,默認為最大長度,即15.
點號不算在表示位數內,但表示位數過長的情況下,點號會自動消除,如:12,345; 1234567,890,123
小數點可表示最大位數14.小數點部分按四舍五入法取值.
?
.DEC
???????DEC(13,2)??長度為13,其中2位小數位.
金額類型.
與類型P的轉換公式為:P((n+1)/2)??????即DEC(13,2)?=?P(7)
????????????????????????????????????????????※注意DEC(14,2)?=?P(8) /?DEC(15,2)?=?P(8)
與之相關的常用的domain有????????????DEC13(13位的小數點項目)
?????????????????????????????????????DECV13(13位的小數點項目(正負))
DEC15(15位的小數點項目)
?????????????????????????????????????DECV15(15位的小數點項目(正負))
金額加算等需要注意溢出(CX_SY_ARITHMETIC_OVERFLOW)
.F
?????????浮動小數點數
?????????可表示值范圍1~31.如:1000000???1.0000000000000000E+06
?????????用WRITE中的EXPONENT屬性可以設定變量的指數,
如:?f =?1000000. WRITE f EXPONENT 2.?10000.000000000000E+02
??????????????????????????????????????????????????????????????????????????
●?演算符
+???????????????加算
-???????????????減算
*???????????????乘算
/???????????????除算
DIV?????????????整除
MOD?????????????取模
**??????????????乘方
?
??????????負數取模(MOD)
例:??1?MOD 5??1??????25?MOD 7??4
1?MOD -5??1??????25?MOD -7??4
???????-1?MOD 5??4??????-25?MOD 7??3
???????-1?MOD -5??4??????-25?MOD -7?3
??????
?????????從上例可以得出以下的結論
①???取模結果只與除數符號有關,與被除數的符號無關
②???所謂的取模即為兩數相除后得到的余數,所以取模結果為幾的關鍵是相除后的商是多少.
上例可以看出取模運算的商是兩數可除盡的最小整數值.如:25/7?3(余4) -25/7?-4(余3)
※可除盡的最小整數值的符號與除數符號一致(-25/-7?-4(余3))
③???取模結果一般都為正數(取模結果?= | |商?*?被除數| -??|除數| |)
④???ABAP的取模結果不代表數學上的取模結果,根據編譯器的不同,?取模結果也可能不同
????????
?
●?常用函數
例??????5.55-????(P)
abs(n)????????????????絕對值?????????????5.55
sign(n)?????????符號值?????????????1.00-
ceil(n)?????????>n的整數最小值????5.00-
floor(n)????????<n的整數最大值????6.00-
trunc(n)????????取整數部???????????5.00-
frac(n)?????????取小數部???????????0.55-
?
strlen(str)???取文字列個數(unicode對應)
lines(arg)????取內表的行數
?
●?邏輯運算符
??????????數值型(I?型、F?型、P?型)
=????????EQ
<>???????NE
<????????LT
>????????GT
<=???????LE
>=???????GE
??????????文字型(C、D、N、T、STRING)
例:f1?邏輯式f2
???????????????????含義??????????????????????????????????????????????????????????????????大小寫區分????????????????右側的空格處理
CO?????????????全包含(f1???f2)????????????????????????????????????????區分?????????????????????????????處理
CN?????????????CO的相反????????????????????????????????????????????????????????區分?????????????????????????????處理
CA?????????????至少包含一個文字(f1???f2)????????????????????區分?????????????????????????????無視
NA?????????????CA的相反???????????????????????????????????????????????????????????????????????????區分?????????????????????????????無視
CS?????????????包含(f1???f2)????????????????????????????????????????????不區分?????????????????????????無視
NS?????????????CS的相反???????????????????????????????????????????????????????????????????????????不區分?????????????????????????無視
CP?????????????與正規表達式匹配(f1???f2)????????????????????不區分?????????????????????????無視
NP?????????????CP的相反???????????????????????????????????????????????????????????????????????????不區分?????????????????????????無視
?
※1.CO中要注意f1的右側空格是作為一個文字來進行處理的,看下面的代碼
DATA:?str1(10)?TYPE?c?VALUE 'abc',
??????????????????str2(10)?TYPE?c?VALUE 'abcdefghij'.
if str1 cp str2.
??write '●'.
else.
????????????write '×'.
endif.
運行結果為'×',原因就在于str1的右側還包含了7個space,而str2中沒有space字符。
?
2.?CP中可以使用正則表達式,*,+,轉意符#
?
●?數據處理
??????????日期,時間處理
例:
2?????????取上個月的最后一天的日期
ultimo??????= sy-datum.
ultimo+6(2) = '01'.
ultimo??????= ultimo - 1.
2?????????取相隔時間差
DATA: t1 TYPE t VALUE '200000',
?????????????????????t2 TYPE t VALUE '020000'.
diff????= t2 - t1.
seconds = diff MOD 86400.
hours???= seconds / 3600.
?
??????????字符串處理
2?????????SHIFT
根據指定文字數向左向右移動,根據指定子字符串的值向左向右移動,刪除指定子字符串的值等
2?????????REPLACE
對字符串進行置換
2?????????TRANSLATE
對字符串大小寫轉換及一些簡單置換
2?????????OVERLAY
將第一個字符串內容置換成相同位置的第二個字符串的內容
2?????????Strlen()
計算字符串的長度(字符串的右space不算在字符串長度內)
2?????????CONDENSE
去除space
2?????????CONCATENATE
字符串連接
2?????????SPLIT
字符串分割
2?????????+OFFSET(LENGTH)
取子字符串
?
●?內表
??????????STANDARD TABLE
標準內表,通過索引對表進行訪問,所屬index table
??????????SORTED TABLE
所屬index table。有索引。
可以設置主鍵,也可不設。
設置主鍵后,在行插入(insert)時,可根據主鍵自動排序。
(但在行追加(append)時,如果追加行的主鍵值大于內表中最后一條記錄的主鍵值時,會有執行錯誤發生)
另外,在行檢索(read itab from stru)時,可以根據stru中的主鍵值(主鍵值以外的項目值被無視)進行檢索。
關于主鍵唯一性的設置?NON-UNIQUE:主鍵值不唯一/UNIQUE:主鍵唯一
??????????HASHED TABLE
哈希內表。
無索引。所以所有關于使用index操作表的語句都不可使用。
必須設置主鍵。
?
●?內表操作
??????????行追加/插入
APPEND????????????單一/復數行追加。一般用于STANDARD TABLE的行追加。
INSERT??????????????????????單一/復數行插入。一般用于SORTED TABLE的行插入。行插入時能根據主鍵自動按升序排列
COLLECT?????????????????????單一行插入,若內表中已有相同主鍵的紀錄,使主鍵以外的數值型項目相加后,合并。(所以要求COLLECT的操作對象內表中,除主鍵以外的項目必須是數值類型(i,p,f))。一般用于定義有主鍵的SORTED TABLE和HASHED TABLE的數值求和等
??????????行更新
MODIFY?????????????單一/復數行內容更新。更新語句一般有下述兩種:
???????????????????1.?Modify table itab from wa
???????????????????根據wa的主鍵值進行檢索,更新。
所以不建議無主鍵的內表使用,如STANDARD TABLE。即便使用了,更新的內容也非預期所想的。一般情況下更新內表中的第一條數據。
更新時,若檢索主鍵值存在的情況下,根據檢索主鍵更新。若主鍵值不存在,則不進行更新,結果返回4??????????
???????????????????2.?Modify itab index sy-tabix from wa
???????????????????根據索引進行檢索,更新。
???????????????????HASHED TABLE因為沒有索引,該語句不允許被使用。
???????????????????SORTED TABLE雖然允許使用,但如果被更新紀錄的主鍵已被修改的情況下
???????????????????會發生執行錯誤。建議使用1.
???????????????????在STANDARD TABLE中會無條件更新,當然前提是該索引存在的情況下。但
???????????????????即使索引不存在,也不會發生指針溢出的情況。
??????????行刪除
DELETE?????????????單一/復數行刪除。
???????????????????與MODIFY相似,可根據主鍵值以及索引進行刪除。
???????????????????可多條件刪除,如:DELETE TABLE itab: FROM line,
WITH TABLE KEY col1 = 3.
在使用重復值刪除(ADJACENT DUPLICATES FROM)的時候要注意,重復值指的是相臨的幾條數據之間的重復值比較,而非整個內表中的所有記錄。所以在使用重復值刪除時,最好先根據比較key排一下序。
??????????表訪問
READ???????????????表讀取。讀取內表中符合檢索條件的第一條記錄。
LOOP AT????????????循環讀取表紀錄。
???????????????????at new compN/at end of compN
???????????????????含義:
-at new compN:在項目comp1~compN值變化的第一條數據時執行
???????????????????-at end of compN:在項目comp1~compN擁有相同值的最后一條記錄
?????????????????????????????????????時執行
???????????????????要注意一下幾點:
???????????????????1.?關于語句at new compN,不是單單compN值變化時執行的,而是到compN
??????????????????之前的任何一個項目的值發生變化時都會執行。
???????????????????2.在at new compN~endat中,有時候不能正常的讀取循環領域的值(*)。
???????????????????3.關于GROUP求和(SUM). SUM一般在at end of compN/at last中被使
用。求和結果放在循環領域的同名項目中。SUM求和比較復雜,也不易操作,如同一內表需要對不同的GROUP進行求和的場合,由于1.的原因需要創建與該內表項目名相同但次序不同的多個結構。建議使用COLLECT。
??????????排序等
SORT???????????????按key值升/降排序
???????????????????STABLE不破壞原有的順序,在原有的順序基礎上排序
總結
以上是生活随笔為你收集整理的ABAP基础类型温习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SAP ABAP:获取汇率的完整实现之一
- 下一篇: SAP中Product Orders(生