定義數(shù)據(jù)類(lèi)型用關(guān)鍵字 TYPES.
定義數(shù)據(jù)對(duì)象用關(guān)鍵字 DATA.
變量
在abap程序中用abap基本數(shù)據(jù)類(lèi)型(預(yù)定義類(lèi)型)定義局部數(shù)據(jù)類(lèi)型,還可以定義包含多個(gè)abap基本數(shù)據(jù)類(lèi)型的結(jié)構(gòu)體類(lèi)型横媚。
參考現(xiàn)有的數(shù)據(jù)對(duì)象(LIKE)
DATA A2 LIKE A1."A1對(duì)象
參考現(xiàn)有的數(shù)據(jù)類(lèi)型(TYPE)
DATA A2 LIKE A1."A1類(lèi)型
VALUE關(guān)鍵字來(lái)指定數(shù)據(jù)對(duì)象的初始值酥泛。
DATA NUM1 TYPE I VALUE 10. "NUM1初始值為10
LENGHT關(guān)鍵字指變量長(zhǎng)度。
DATA NUM2 TYPE C LENGHT8.
DATA NUM2(8) TYPE C.
DATA語(yǔ)句沒(méi)有指定 TYPE則默認(rèn)長(zhǎng)度為1的C類(lèi)型莉测。
系統(tǒng)變量
SY-SUBRC:系統(tǒng)執(zhí)行某命令后颜骤,表示執(zhí)行成功與否的變量,'0'表示成功
SY-UNAME:當(dāng)前使用者的name
SY-DATUM:當(dāng)前系統(tǒng)日期
SY-UZEIT:當(dāng)前系統(tǒng)時(shí)間
SY-TCODE:當(dāng)前執(zhí)行程序的Tcode
常量
數(shù)值文字不加單引號(hào)
123捣卤,-123
字符文字加單引號(hào)
'HELLO','123.4','123E4'
CONSTANTS語(yǔ)句用來(lái)定義常數(shù)忍抽,必須有VALUE值
CONSTANTS a1 TYPE TNAME VALUE8.
一個(gè)漢字占兩個(gè)長(zhǎng)度
賦值
MOVE 對(duì)象/對(duì)象字段 TO 對(duì)象/對(duì)象字段.
對(duì)象/對(duì)象字段 = 對(duì)象/對(duì)象字段.
運(yùn)算
所有的符號(hào)都要用空格隔開(kāi),圓括號(hào)和操作符都是關(guān)鍵字需要跟操作數(shù)之間至少用一個(gè)空格隔開(kāi)董朝。
例:( 20 + 10) *10 + 10 / 2.
用'/'去大值 用DIV取小值
數(shù)值函數(shù)
ABS(n):取絕對(duì)值
SIGN(n):判斷數(shù)值符號(hào)
n為正鸠项,返回1;n為0子姜,返回0祟绊;n為負(fù),返回-1哥捕;
CEIL(n):取大于數(shù)值n的最小整數(shù).
例:WRITE CEIL(1.23). 輸出2
WRITE CEIL(-2.23). 輸出-2
FLOOR(n):取小于數(shù)值n的最小整數(shù)
例:WRITE FLOOR(1.23). 輸出1
WRITE FLOOR(-2.23). 輸出-3
TRUNC(n):去數(shù)值的整數(shù)部分
例:WRITE TRUNC(1.23). 輸出1
WRITE TRUNC(-2.23). 輸出-2
FRAC(n):去數(shù)值的小數(shù)部分
例:WRITE FRAC(1.23). 輸出0.23
具體用法:
DATA NUM TYPE P LENGTH 15 DECIMALS 3 .
num = TRUNC( NUM1 ).
WRITE:num.```
#####字符串函數(shù)
* 字符串移位
語(yǔ)法:SHIFT <c> by <n> PLACES <modes>.
<modes>:(1)空白牧抽,字符串往左移一位
(2).LEFT 字符串往左移n位
(3).RIGHT 字符串往右移n位
(4).CIRCULAR 字符串以環(huán)形方式移位
* 取代
語(yǔ)法:REPLACE <STR1> WITH <STR2> INTO <c>.
將字符串<c>中的<STR1>以<STR2>取代 *區(qū)分大小寫(xiě)
* 大小寫(xiě)轉(zhuǎn)換
語(yǔ)法:```TRANSLATE<c> to LOWER CASE."轉(zhuǎn)小寫(xiě)
TRANSLATE <c> to UPPER CASE."轉(zhuǎn)大寫(xiě)```
* 字符串長(zhǎng)度 strlen(<c>)*只能取字符不包含空格
例:a3 = strlen( <c> ).
* 取部分字符串
<c>+n(n)
例:a2 = <c>+2(2)
具體代碼:```DATA A1 TYPE C LENGTH 6 VALUE'HELLO'.
DATA A2 TYPE C LENGTH 6.
DATA A3 TYPE I.
DATA STR1(3) VALUE 'ELL'."區(qū)分大小寫(xiě)
DATA STR2(3) VALUE '123'.
shift a1.
WRITE:/ a1.
SHIFT a1 by 1 PLACES CIRCULAR.
WRITE:/ a1.
REPLACE STR1 WITH STR2 INTO A1.
WRITE:/ A1.
A1 = 'HELLO'.
TRANSLATE a1 to LOWER CASE.
WRITE:/ a1.
a3 = strlen( a1 ).
WRITE:/ a3.
a2 = a1+2(2).
WRITE:/ a2.```
![運(yùn)行結(jié)果.png](http://upload-images.jianshu.io/upload_images/3459413-57ddeba474440095.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
######選擇屏幕
* 單選框、按鈕
PARAMETERS TYPE 后面是類(lèi)型
```DEFAULT``` 設(shè)置默認(rèn)值
```OBLIGATORY``` 設(shè)置為必輸項(xiàng)
* 復(fù)雜輸入框遥赚、
SELECT-OPTIONS FOR 后面是對(duì)象
LOW HIGH為值得上下范圍
```DEFAULT <g>```設(shè)置LOW值
```TO <g>``` 設(shè)置HIGH值
* 將多個(gè)元素放在一行上
```SELECTION-SCREEN BEGIN OF line.
PARAMETERS P_WEeKS TYPE T001W-WERKS OBLIGATORY ."工廠
PARAMETERS P_WEeKS TYPE T001W-WERKS OBLIGATORY ."工廠
SELECTION-SCREEN END OF line.```
將并排顯示
* 創(chuàng)建元素邏輯塊扬舒,把邏輯上在一起屏幕元素分組
```SELECTION-SCREEN BEGIN OF BLOCK X WITH FRAME TITLE TEXT-001.
PARAMETERS P_WERKS TYPE T001W-WERKS OBLIGATORY ."工廠
SELECT-OPTIONS:S_LIFNR FOR LFA1-LIFNR,"供應(yīng)商編碼
S_MATNR FOR MARA-MATNR, "物料號(hào)
S_MTART FOR MARA-MTART, "物料類(lèi)型
S_MATKL FOR MARA-MATKL,"物料組
S_EXTWG FOR MARA-EXTWG,"外部物料組
S_BUDAT FOR MKPF-BUDAT."過(guò)賬日期
SELECTION-SCREEN END OF BLOCK X.```
* 拓展
單選框?qū)崿F(xiàn)復(fù)選框的功能
``SELECTION-SCREEN BEGIN OF BLOCK X WITH FRAME TITLE TEXT-001.
PARAMETERS P_WERKS TYPE T001W-WERKS OBLIGATORY ."工廠
SELECT-OPTIONS:S_P_WERKS FOR T001W-WERKS NO-EXTENSION no intervals .
SELECTION-SCREEN END OF BLOCK X.```
![例圖.png](http://upload-images.jianshu.io/upload_images/3459413-1b3b4e94d67fd133.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
其實(shí)在外觀上和單選框一樣,但實(shí)際為沒(méi)有擴(kuò)展沒(méi)有間隔的復(fù)選框凫佛。