005. 语法se38

系统变量查看

T-CODE: se11
结构: syst
使用:SY-名称

数据类型

  • 数据对象的技术特性的定义
  • 本身不占用内存空间
  • 可以是系统预定义或者用户自定义

数据对象

  • 内存变量
  • 指定为某一特定数据类型

常用预定义数据类型

类型缩写 类型 默认长度 允许长度 初始值 描述
C 文本型 1 - Space 字符串数据,如'Program'
D 日期型 8 8 '00000000' 日期数据,格式为YYYYMMDD
F 浮点型 8 8 0 浮点数
I 整数 4 10 0 带正负符号的整数
N 数值型 1 31 ‘000...0’ 数值所组成的字符串
P 压缩型 8 16 0 将两个 十进制数字压缩到一个字节
T 时间型 6 6 ‘000000’ 时间

1.默认的定义数据类型是CHAR。
2.取值的时候C型默认从左取,N型从右取,超过定义长度则截断。
3.C类型,可以赋值数值,也可以赋值字符,还可以混合,不过取值时如果是数值类型靠右取值。
4.日期和时间类型的变量可进行加减乘除运算。
5.P类型.小数点要使用DECIMAL声明

定义数据类型——TYPES

  • 在程序中用types声明局部数据类型
  • 语法格式与变量类似
  • 用Types定义的类型在程序中用于声明常量或者变量
  • Types定义的是类型,不是变量,所以不能直接赋值
  • ABAP数据类型可以是预定义数据类型,可以是数据字典里的全局数据类型,或者用户在程序中自定义的数据类型。

运算符

+-*/ 可以使用
div 取整,mod 取余数

比较运算符

= EQ, <>或><或者NE, <LT, >GT, <=LE, >=GE,

逻辑运算符:

AND,OR,NOT

运算函数

image.png

变量定义包含name, length, type等,语法如下:

DATA <name> [<length>] type <type>[ value <value>] [ decimal <decimals>]
其中: [] 里的内容表示可选项。<>表示名称
<name>: 变量名称, 最长30个字符, 不可含有 + . , : ( ) 等字符
<length>长度,要用圆括号括起来 如 LINE(20) TYPE C.
<type>:数据类型
<value>: 初始值
<decimals>: 小数位

DATA:C1 TYPE C,
              INT1 TYPE I VALUE 1,
             TEMP TYPE P DECIMAL 2.

关键字TYPE和LIKE
变量定义也可以用关键字LIKE
DATA <name> [<length>] like<object>|<type>[ value <value>] [ decimal <decimals>]
TYPE 与LIKE的区别:
LIKE 用在已有值的数据类型, 如系统变量, 而TYPE则是用在 定义数据类型。

DATA: MYDATA LIKE SY-DATUM.
DATA:TRANSCODE LIKE SY-TCODE.

常量定义使用 CONSTANTS

CONSTANTS<常量名>[<长度> ] TYPE <数据类型> VALUE <默认值>
常量值一旦被定义,即被长期保存在内存,其值无法改变

CONSTANTS  PI  TYPE  P  DECIMALS  5  VALUE  '3.14159'.
" 系统常量"
SY-SUBRC :  系统执行某指令后,表示执行成功与否的变量,'0' 表示成功
SY-UNAME:   当前使用者登入SAP的USERNAME;
SY-DATUM:   当前系统日期;    
SY-UZEIT:   当前系统时间;     
SY-TCODE:   当前执行程序的Transaction code    
SY-INDEX :  当前LOOP循环过的次数  
SY-TABIX:   当前处理的是internal table 的第几笔    
SY-MANDT:   CLIENT(客户端编号) NUMBER      
SY-VLINE:    画竖线
SY-ULINE:   画横线

结构体定义:

有结构的变量
程序中用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.
结构体赋值:
  1. 可对结构体直接赋值
  2. 相同结构体之间可以使用等号来实现数据的复制
  3. WRITE Structure Name可输出所有字段,或使用<Structure>-<field name>输出指定字段
  4. 相同结构体之间使用Move……To……进行赋值;
    有差异的结构体,可使用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.

结构体继承:

参考已存在的结构体创建一个属性相同的新结构体
可在新结构体中增加字段
定义语句: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.

数据的赋值是程序的常用操作

  1. MOVE <F1> TO <F2>
    将F1的值存至变量 F2 中,F1与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>[+<偏移量>][(<取数位>)] TO <f2>[+<偏移量>][(<取数位>)
    WRITE <f1>[+<偏移量>][(<取数位>)] TO <f2>[+<偏移量>][(<取数位>)
    <f2>[+<偏移量>][(<取数位>) = <F1>+ [+<偏移量>][(<取数位>)]
DATA: F1(10)  VALUE  'ABCDEFGHIJ',
      F2(5).
F2 = F1+3(5).
WRITE: F1, / F2.
  1. 用于结构体的赋值,将Strings1中的field组件的数据复制至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>.

类型转换

  1. 在不同类型的数据对象之间赋值,会自动进行类型的转换;
  2. 转换过程遵照固定的规则,如C类型数据赋值给N类型,只有数字字符被传递,其他忽略;
  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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,386评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,142评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,704评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,702评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,716评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,573评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,314评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,230评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,680评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,873评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,991评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,706评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,329评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,910评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,038评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,158评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,941评论 2 355

推荐阅读更多精彩内容