005. 語法se38

系統(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ù)

image.png

變量定義包含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)體賦值:
  1. 可對結(jié)構(gòu)體直接賦值
  2. 相同結(jié)構(gòu)體之間可以使用等號來實現(xiàn)數(shù)據(jù)的復制
  3. WRITE Structure Name可輸出所有字段溉奕,或使用<Structure>-<field name>輸出指定字段
  4. 相同結(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ù)的賦值是程序的常用操作

  1. 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.
  1. 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. 
  1. 在源字段中取偏移量賦值給目標變量:
    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.
  1. 用于結(jié)構(gòu)體的賦值叠国,將Strings1中的field組件的數(shù)據(jù)復制至String2中, 僅復制相同名稱的字段:
MOVE –CORRESPONDING  <Strings1>  TO  <String2>.
  1. 指針對象,通過語句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)換

  1. 在不同類型的數(shù)據(jù)對象之間賦值,會自動進行類型的轉(zhuǎn)換香追;
  2. 轉(zhuǎn)換過程遵照固定的規(guī)則合瓢,如C類型數(shù)據(jù)賦值給N類型,只有數(shù)字字符被傳遞透典,其他忽略晴楔;
  3. C不能直接賦值給I,需要C>N>I;
  4. 可以使用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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末滥崩,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子讹语,更是在濱河造成了極大的恐慌钙皮,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件顽决,死亡現(xiàn)場離奇詭異短条,居然都是意外死亡,警方通過查閱死者的電腦和手機才菠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進店門茸时,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人赋访,你說我怎么就攤上這事可都。” “怎么了蚓耽?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵渠牲,是天一觀的道長。 經(jīng)常有香客問我步悠,道長签杈,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任鼎兽,我火速辦了婚禮答姥,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘谚咬。我一直安慰自己鹦付,他們只是感情好,可當我...
    茶點故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布择卦。 她就那樣靜靜地躺著睁壁,像睡著了一般背苦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上潘明,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天行剂,我揣著相機與錄音,去河邊找鬼钳降。 笑死厚宰,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的遂填。 我是一名探鬼主播铲觉,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼吓坚!你這毒婦竟也來了撵幽?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤礁击,失蹤者是張志新(化名)和其女友劉穎盐杂,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體哆窿,經(jīng)...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡链烈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了挚躯。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片强衡。...
    茶點故事閱讀 40,567評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖码荔,靈堂內(nèi)的尸體忽然破棺而出漩勤,到底是詐尸還是另有隱情,我是刑警寧澤缩搅,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布锯七,位于F島的核電站,受9級特大地震影響誉己,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜域蜗,卻給世界環(huán)境...
    茶點故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一巨双、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧霉祸,春花似錦筑累、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春镜沽,著一層夾襖步出監(jiān)牢的瞬間敏晤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工缅茉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留嘴脾,地道東北人。 一個月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓蔬墩,卻偏偏與公主長得像译打,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子拇颅,可洞房花燭夜當晚...
    茶點故事閱讀 45,585評論 2 359

推薦閱讀更多精彩內(nèi)容