日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ABAP基础类型温习

發布時間:2025/3/20 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ABAP基础类型温习 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
基礎類型

.P

???????聲明:?TYPES mount??TYPE p length 5 DECIMALS 2.

又稱為壓縮類型.

值范圍115整型數字(除去最后的符號位).

若在沒有定義長度的情況下,默認為最大長度,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

?????????浮動小數點數

?????????可表示值范圍131.: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?(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

??????????文字型(CDNTSTRING)

例: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的右側還包含了7space,而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 TABLEHASHED 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:在項目comp1compN值變化的第一條數據時執行

???????????????????-at end of compN:在項目comp1compN擁有相同值的最后一條記錄

?????????????????????????????????????時執行

???????????????????要注意一下幾點:

???????????????????1.?關于語句at new compN,不是單單compN值變化時執行的,而是到compN

??????????????????之前的任何一個項目的值發生變化時都會執行。

???????????????????2.在at new compNendat中,有時候不能正常的讀取循環領域的值(*)。

???????????????????3.關于GROUP求和(SUM). SUM一般在at end of compN/at last中被使

用。求和結果放在循環領域的同名項目中。SUM求和比較復雜,也不易操作,如同一內表需要對不同的GROUP進行求和的場合,由于1.的原因需要創建與該內表項目名相同但次序不同的多個結構。建議使用COLLECT

??????????排序等

SORT???????????????key值升/降排序

???????????????????STABLE不破壞原有的順序,在原有的順序基礎上排序

總結

以上是生活随笔為你收集整理的ABAP基础类型温习的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。