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

  • Post author:
  • Post category:其他



数据类型


数据对象的技术特性的定义;

本身不占用内存空间;

可以是系统预定义或者用户自定义;


数据对象


内存变量

指定为某一特定数据类型;


常用的预定义数据类型


文本型© 默认情况下只有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:系统变量

在这里插入图片描述

在这里插入图片描述

用法 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.

总结一: 如果不想别人编辑你的程序,则应该选中这里。

在这里插入图片描述

总结二:以下可以实现非关键字的提示;

在这里插入图片描述

在这里插入图片描述



版权声明:本文为beyond911原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。