ABAP的基础语法(类型,变量)

数据类型
数据对象的技术特性的定义;
本身不占用内存空间;
可以是系统预定义或者用户自定义;
数据对象
内存变量
指定为某一特定数据类型;

常用的预定义数据类型
文本型© 默认情况下只有1位长度;默认值为空;
日期型(d)
浮点型 (f)
整型(i)
数值(n) 数值所组成的字符串
压缩型§:将两个十进制数字压缩到一个字节;
时间型(t)
总结
1.默认的定义数据类型是CHAR.
2.取值的时候C型默认从左取值,N型从右取,超过定义长度则截断;
3.C类型,可以赋值数值,也可以赋值字符,还可以混合,不过取值时如果椒数值类型靠右取值。
4.日期和时间类型 的变量可进行加减乘除运算。
5.P类型,小数点要使用DECIMAL声音

自定义数据类型
TYPES申明局部数据类型,SE11定义就是全局数据类型.
TYPES是预定义的数据类,不是变量,不能直接赋值。

数据对象
数据对象: 文本,变量,常量
主要指变量
变量在程序运行过程中值会变化

变量: DATA [] type [value ] [decimal ]
[]表示内容的可选项;
<>表示名称
声明多个变量的时候DATA后面加上冒号,每个声明语句结束 后用逗号隔开。
关键字type和like
变量定义也可以用关键字like.
SYST:系统变量
ABAP的基础语法(类型,变量)_第1张图片
ABAP的基础语法(类型,变量)_第2张图片
用法 SY-INDEX:表示当前循环的此数.

常量(CONSTANTS)
格式 CONSTANTS<常量名>[<长度>] type <数据类型> VALUE <默认值>
常用的系统变量
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


END OF .

结构体赋值
1.可对结构体直接赋值
2.相同的结构体之间可等号来实现数据复制;
3.相同的结构体之间可以使用MOVE…TO…进行赋值; 有差异的结构体,可以使用MOVE - CORRESSPONDING匹配及赋值相同的字段
4. WRITE STRUCTURE NAME 可输出所有字段;
结构体继承
定义语句:INCLUDE STRCTURE
以下是一个例子:(USERINF就是一个结构)
DATA:BEGIN OF EMPLOYEE,
INCLUDE STRUCTURE USERINF,
DATA:BIRTHDATE TYPE D,
ADD(50) TYPE C,
END OF EMPLOYEE.

数据输出
WRITE
write [/][] [()]资料项
/:换行
POS:屏幕X坐标
(len):显示长度;

生产空白行
SKIP[]
SKIP TO LINE []

以下是例子

REPORT ZJGLTEST2.

INCLUDE <SYMBOL>.
INCLUDE <ICON>.



*----预定义数据类型:变量-------*

DATA LV_C(10) TYPE C VALUE 'Harryjing'.
DATA LV_D TYPE D .
DATA LV_F TYPE F VALUE '5443.7'.
DATA LV_I TYPE I value 123456.
DATA LV_N TYPE N value 123 .
DATA LV_P TYPE P value '123.123' DECIMALS 3.
DATA LV_T TYPE T.

LV_D = SY-DATUM .
LV_D = LV_D + 30.
LV_T = SY-UZEIT.

WRITE: /6'LV_C:',(5)LV_C.
WRITE: /'LV_D:',20 LV_D.
WRITE: /'LV_F:',LV_F.
WRITE: /'LV_I:',LV_I.
WRITE: /'LV_N:',LV_N.
WRITE: /'LV_P:',LV_P.
WRITE: /'LV_T:',LV_T.
WRITE: / SY-ULINE.



*---直定义数据类型---*
*数据元素
TYPES: TY_BU_BNAME(12)  TYPE C, "名字
        TY_BU_BNAME1 TYPE XUBNAME ," xubname is data elelement
        TY_BU_BNAME2 TYPE TY_BU_BNAME.


*结构
TYPES :BEGIN OF TY_USR01,
    NAME(10) TYPE C,
  AGE    TYPE i,
  TEL(11) type n,
  END OF TY_USR01.

*变量

  DATA :LV_BNAME TYPE TY_BU_BNAME ,
         LV_BNAME1 TYPE TY_BU_BNAME1 ,
         LV_BNAME2 TYPE TY_BU_BNAME2 ,
         LV_USR01   TYPE TY_USR01  .

  LV_BNAME = '李三'.
  LV_BNAME1 = '张四'.
  LV_BNAME2  = LV_BNAME.

  WRITE:/'TV_BU_BNAME:' ,LV_BNAME.
  WRITE:/'TV_BU_BNAME1:' ,LV_BNAME1.
  WRITE:/'TV_BU_BNAME2:' ,LV_BNAME2.
  WRITE: / SY-ULINE.


 LV_USR01-NAME = '张三'.
 LV_USR01-AGE = 20 .
 LV_USR01-TEL = 123456789.


WRITE:/'TY_USR01-NAME:',lv_USR01-NAME.
WRITE:/'TY_USR01-AGE:',lv_USR01-AGE.
WRITE:/'TY_USR01-TEL:',lv_USR01-TEL.
WRITE: / SY-ULINE.


*结构休变量
  DATA :BEGIN OF LS_USR02,
    NAME(10) TYPE C,
  AGE    TYPE i,
  TEL(11) type n,
  END OF LS_USR02.

  LS_USR02 = lv_USR01.

WRITE:/'LS_USR0S-NAME:',LS_USR02-NAME.
WRITE:/'LS_USR02-AGE:',LS_USR02-AGE.
WRITE:/'LS_USR02-TEL:',LS_USR02-TEL.
WRITE: / SY-ULINE.


*结构休继承

DATA : BEGIN OF LS_CUST.
      INCLUDE STRUCTURE LS_USR02.
DATA : address(40) type c,
      END OF LS_CUST.

MOVE-CORRESPONDING LS_USR02 TO LS_CUST.
LS_CUST-address = '成都人民广场'.


WRITE:/'LS_CUST-NAME:',LS_CUST-NAME.
WRITE:/'LS_CUST-AGE:',LS_CUST-AGE.
WRITE:/'LS_CUST-TEL:',LS_CUST-TEL.
WRITE:/'LS_CUST-address:',LS_CUST-address.
WRITE: / SY-ULINE.


SKIP.
*输出图标和符号*
WRITE:/'Phone Symbol:',sym_phone AS SYMBOL.
WRITE:/'Alarm Icon:', icon_alarm AS icon.

SKIP.
*颜色输出*
DATA col type i VALUE 0.
DO 8 TIMES.
  col = sy-index - 1.
  FORMAT COLOR = COL.
  WRITE : / col  COLOR OFF,
   'INTENSIFIED ON ' INTENSIFIED ON,
   'INTENSIFIED OFF ' INTENSIFIED OFF,
   'INVERSE ON ' INVERSE ON.
ENDDO.

总结一: 如果不想别人编辑你的程序,则应该选中这里。
ABAP的基础语法(类型,变量)_第3张图片

总结二:以下可以实现非关键字的提示;
ABAP的基础语法(类型,变量)_第4张图片

在这里插入图片描述

你可能感兴趣的:(ABAP,其他)