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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

容易忘记的常识

發布時間:2025/3/20 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 容易忘记的常识 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

基礎類型

.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不破壞原有的順序,在原有的順序基礎上排序

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的容易忘记的常识的全部內容,希望文章能夠幫你解決所遇到的問題。

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