系統(tǒng)變量查看
T-CODE: se11
結(jié)構(gòu): syst
使用:SY-名稱
數(shù)據(jù)類型
- 數(shù)據(jù)對象的技術(shù)特性的定義
- 本身不占用內(nèi)存空間
- 可以是系統(tǒng)預定義或者用戶自定義
數(shù)據(jù)對象
- 內(nèi)存變量
- 指定為某一特定數(shù)據(jù)類型
常用預定義數(shù)據(jù)類型
類型縮寫 | 類型 | 默認長度 | 允許長度 | 初始值 | 描述 |
---|---|---|---|---|---|
C | 文本型 | 1 | - | Space | 字符串數(shù)據(jù),如'Program' |
D | 日期型 | 8 | 8 | '00000000' | 日期數(shù)據(jù),格式為YYYYMMDD |
F | 浮點型 | 8 | 8 | 0 | 浮點數(shù) |
I | 整數(shù) | 4 | 10 | 0 | 帶正負符號的整數(shù) |
N | 數(shù)值型 | 1 | 31 | ‘000...0’ | 數(shù)值所組成的字符串 |
P | 壓縮型 | 8 | 16 | 0 | 將兩個 十進制數(shù)字壓縮到一個字節(jié) |
T | 時間型 | 6 | 6 | ‘000000’ | 時間 |
1.默認的定義數(shù)據(jù)類型是CHAR蕴茴。
2.取值的時候C型默認從左取伍伤,N型從右取,超過定義長度則截斷。
3.C類型唧领,可以賦值數(shù)值,也可以賦值字符,還可以混合,不過取值時如果是數(shù)值類型靠右取值醉箕。
4.日期和時間類型的變量可進行加減乘除運算。
5.P類型.小數(shù)點要使用DECIMAL聲明
定義數(shù)據(jù)類型——TYPES
- 在程序中用types聲明局部數(shù)據(jù)類型
- 語法格式與變量類似
- 用Types定義的類型在程序中用于聲明常量或者變量
- Types定義的是類型徙垫,不是變量讥裤,所以不能直接賦值
- ABAP數(shù)據(jù)類型可以是預定義數(shù)據(jù)類型,可以是數(shù)據(jù)字典里的全局數(shù)據(jù)類型姻报,或者用戶在程序中自定義的數(shù)據(jù)類型坞琴。
運算符
+-*/ 可以使用
div 取整,mod 取余數(shù)
比較運算符
= EQ逗抑, <>或><或者NE, <LT, >GT, <=LE, >=GE,
邏輯運算符:
AND,OR,NOT
運算函數(shù)
變量定義包含name, length, type等,語法如下:
DATA <name> [<length>] type <type>[ value <value>] [ decimal <decimals>]
其中: [] 里的內(nèi)容表示可選項。<>表示名稱
<name>: 變量名稱, 最長30個字符, 不可含有 + . , : ( ) 等字符
<length>長度,要用圓括號括起來 如 LINE(20) TYPE C.
<type>:數(shù)據(jù)類型
<value>: 初始值
<decimals>: 小數(shù)位
DATA:C1 TYPE C,
INT1 TYPE I VALUE 1,
TEMP TYPE P DECIMAL 2.
關(guān)鍵字TYPE和LIKE
變量定義也可以用關(guān)鍵字LIKE
DATA <name> [<length>] like<object>|<type>[ value <value>] [ decimal <decimals>]
TYPE 與LIKE的區(qū)別:
LIKE 用在已有值的數(shù)據(jù)類型, 如系統(tǒng)變量, 而TYPE則是用在 定義數(shù)據(jù)類型寒亥。
DATA: MYDATA LIKE SY-DATUM.
DATA:TRANSCODE LIKE SY-TCODE.
常量定義使用 CONSTANTS
CONSTANTS<常量名>[<長度> ] TYPE <數(shù)據(jù)類型> VALUE <默認值>
常量值一旦被定義邮府,即被長期保存在內(nèi)存,其值無法改變
CONSTANTS PI TYPE P DECIMALS 5 VALUE '3.14159'.
" 系統(tǒng)常量"
SY-SUBRC : 系統(tǒng)執(zhí)行某指令后,表示執(zhí)行成功與否的變量,'0' 表示成功
SY-UNAME: 當前使用者登入SAP的USERNAME;
SY-DATUM: 當前系統(tǒng)日期;
SY-UZEIT: 當前系統(tǒng)時間;
SY-TCODE: 當前執(zhí)行程序的Transaction code
SY-INDEX : 當前LOOP循環(huán)過的次數(shù)
SY-TABIX: 當前處理的是internal table 的第幾筆
SY-MANDT: CLIENT(客戶端編號) NUMBER
SY-VLINE: 畫豎線
SY-ULINE: 畫橫線
結(jié)構(gòu)體定義:
有結(jié)構(gòu)的變量
程序中用DATA定義的局部變量
DATA: BEGIN OF <name>
<field1>……
<field2>……
END OF<name>.
DATA:BEGIN OF USERINF,
SID(10) TYPE C,
NAME(20) TYPE C,
TEL(20) TYPE C,
END OF USERINF.
DATA USER2 TYPE USERINF.
結(jié)構(gòu)體賦值:
- 可對結(jié)構(gòu)體直接賦值
- 相同結(jié)構(gòu)體之間可以使用等號來實現(xiàn)數(shù)據(jù)的復制
- WRITE Structure Name可輸出所有字段溉奕,或使用<Structure>-<field name>輸出指定字段
- 相同結(jié)構(gòu)體之間使用Move……To……進行賦值褂傀;
有差異的結(jié)構(gòu)體,可使用MOVE-CORRESSPONDING匹配及賦值相同的字段
USERINF-SID='A00001'.
USERINF-NAME='JERY'.
USERINF-TEL='010-12345678'.
USER2=USERINF.
WRITE:USER2, / USERINF-SID.
DATA:BEGIN OF USERDETAIL,
SID(10) TYPE C,
NAME(20) TYPE C,
BIRDATE TYPE D,
ADD(50) TYPE C,
END OF USERDETAIL.
MOVE-CORRESSPONDING USERINF TO USERDETAIL.
結(jié)構(gòu)體繼承:
參考已存在的結(jié)構(gòu)體創(chuàng)建一個屬性相同的新結(jié)構(gòu)體
可在新結(jié)構(gòu)體中增加字段
定義語句:INCLUDE STRUCTURE
DATA:BEGIN OF EMPLOYEE,
INCLUDE STRUCTURE USERINF,
DATA:BIRTHDATE TYPE D,
ADD(50) TYPE C,
END OF EMPLOYEE.
MOVE-CORRESSPONDING USERINF TO USERDETAIL.
數(shù)據(jù)的賦值是程序的常用操作
- MOVE <F1> TO <F2>
將F1的值存至變量 F2 中加勤,F(xiàn)1與F2可以是不同類型的變量仙辟,但有一定限制。
DATA: m_gendle(4) TYPE c.
MOVE 'MALE' TO m_gendle.
WRITE: m_gendle.
- WRITE <value> TO <field>.帶有格式的賦值
這里的WRITE用于賦值鳄梅,不是用于輸出
DATA: NAME(20) VALUE 'SOURCE',
SOURCE(10) VALUE 'LILY',
TARGET(10).
WRITE (NAME) TO TARGET.?WRITE / TARGET.
DATA: gv_char1(20) TYPE c,
gv_char2(20) TYPE c,
dec1(10) TYPE p DECIMALS 2 VALUE '22345.89'.
* date *
WRITE:/ 'date variable'.
WRITE sy-datum TO gv_char1.
WRITE:/ 'write to', gv_char1.
MOVE sy-datum TO gv_char2.
WRITE:/ 'move to',
gv_char2.
SKIP 1.
* decimal *
WRITE:/ 'decimal variable'.
WRITE dec1 TO gv_char1.
WRITE:/ 'write to', gv_char1.
MOVE dec1 TO gv_char2.
WRITE:/'move to', gv_char2.
- 在源字段中取偏移量賦值給目標變量:
MOVE <f1>[+<偏移量>][(<取數(shù)位>)] TO <f2>[+<偏移量>][(<取數(shù)位>)
WRITE <f1>[+<偏移量>][(<取數(shù)位>)] TO <f2>[+<偏移量>][(<取數(shù)位>)
<f2>[+<偏移量>][(<取數(shù)位>) = <F1>+ [+<偏移量>][(<取數(shù)位>)]
DATA: F1(10) VALUE 'ABCDEFGHIJ',
F2(5).
F2 = F1+3(5).
WRITE: F1, / F2.
- 用于結(jié)構(gòu)體的賦值叠国,將Strings1中的field組件的數(shù)據(jù)復制至String2中, 僅復制相同名稱的字段:
MOVE –CORRESPONDING <Strings1> TO <String2>.
- 指針對象,通過語句FIELD-SYMBOLS加上將括號“<>”來定義戴尸。
FIELD-SYMBOLS <fs>.
ASSIGN <value> TO <field>.
可以不指定參考類型,用語句ASSIGN來分配給它變量.
<FS>并不是變量粟焊,存放的是變量的地址,而非變量本身。
如果修改了field symbol的值项棠,則相應的變量的值也隨之更改悲雳。
DATA NUM TYPE I VALUE 12.
FIELD-SYMBOLS: <F1>,
<F2> TYPE I,
<F3> LIKE NUM.
ASSIGN: NUM TO <F1>,
NUM TO <F2>,
NUM TO <F3>.
WRITE: / NUM, <F1>,<F2>,<F3>.
<F2> = 25.
WRITE: / NUM, <F1>,<F2>,<F3>.
類型轉(zhuǎn)換
- 在不同類型的數(shù)據(jù)對象之間賦值,會自動進行類型的轉(zhuǎn)換香追;
- 轉(zhuǎn)換過程遵照固定的規(guī)則合瓢,如C類型數(shù)據(jù)賦值給N類型,只有數(shù)字字符被傳遞透典,其他忽略晴楔;
- C不能直接賦值給I,需要C>N>I;
- 可以使用MOVE TO或WRITE TO語句掷匠。
DATA:TEXT(10) TYPE C VALUE 'ABC1234567',
NUM(10) TYPE N,
INT TYPE I.
NUM = TEXT.
INT = NUM.
WRITE: NUM, INT.
DATA: CHR TYPE C.
FIELD-SYMBOLS:<FS> TYPE X,
<FC> TYPE C.
CHR = 'A'.
ASSIGN CHR TO <FS> CASTING.
WRITE: CHR, <FS>.
<FS> = <FS>+1.
ASSIGN <FS> TO <FC> CASTING.
MOVE <FC> TO CHR.
WRITE:/ CHR, <FS>, <FC>.
日期處理
DATA: ULTIMO TYPE D.
ULTIMO = SY-DATUM. “如果傳回20050928
ULTIMO+6(2) = ‘01’. “ 則為20050901
ULTIMO = ULTIMO - 1. “ 為20050831