ABAP 基础语法

一、创建软件包(非必须)

通过事务码SE21创建软件包

1、填写包名,点击创建。注意包名用Z开头。

2、填写对包的简短描述,软件组织选择客户开发,点击确认。 

3、点击确认。 

4、检查信息,无误,点击保存。 

5、如果需要删除下挂没有程序的包,通过事务码SE80,搜索软件包,右键删除即可。

二、新建程序

通过事务码SE38进入创建程序页面。

1、填写程序名称,测试用程序一般用Y开头,自开发的程序一般用Z开头,点击创建。

 2、在弹出的对话框中填写程序标题,选择类型,点击保存。

3、 在弹出的对话框中选择软件包,点击保存,如果没有创建软件包可以点击创建本地对象。

4、点击确认。 

5、进入程序编写页面。

 三、编译运行及其他技巧

1、检查,可以检查程序错误。Ctrl+F2

2、激活,触发编译,必须激活之后才可以执行。Ctrl+F3

3、执行,执行程序。F8

通过下图可以找到三个按钮位置。

4、在输入部分关键字时,会出现提醒,此时按下Tab键即可关键字补全。

5、对于不了解的关键字,可以通过选择关键字之后按F1来查看具体用法等信息。

6、可点击程序美化器对代码格式进行优化。Shift+F1

设置格式美化器,点击实用程序->设置->ABAP编辑器->格式优化器,修改完成之后保存。

7、ABAP的注释

a、*注释该行,只能用于行首。
b、"(英文双引号),注释本行往后信息,可以不用于行首。
c、多行注释快捷键:Ctrl+,
d、取消多行注释:Ctrl+.

四、语法基础

1、WRITE表示输出。“/”表示换行,不要引号内使用。“.”表示语句的结束,不可省略。

 a、SKIP表示插入空白行,后面加上数字n表示插入n个空白行。
b、ULINE表示插入一条直线,不可以加数字表多根直线。
WRITE '字符串要用单引号?不能用双引号因为表示注释,双引号表示注释时可以不在行首'.
ULINE.
WRITE / 'WRITE表示输出,小数点表示结尾(必输),斜杠代表换行'.
ULINE.
WRITE: / '这样','可以','输出','多个变量'.
ULINE.
WRITE / : '这样','就会','每输出','一个变量就换行'.

此段代码运行结果显示: 

2、PARAMETERS表示允许用户在执行程序时输入数据。这些参数可以是文本框、选择框、日期选择器等控件,供用户在执行时填入值。 

*声明链接到屏幕上的输入字段*
PARAMETERS p_name TYPE C LENGTH 8.
PARAMETERS : p_age TYPE N  LENGTH 3,
             p_msg TYPE String.

WRITE : / 'p_name',p_name.
WRITE : / 'p_age',p_age.
WRITE : / 'p_msg',p_msg.

执行结果,输入完成之后点击执行即可显示输入结果。 

 3、DATA 变量名 <TYPE 变量类型> <LENGTH 变量长度> <VALUE 默认值>。

只需要对C、N、X、P类型的变量定义长度。具体类型定义可参考:ABAP 基本数据类型

变量可以直接=赋值,也可以用MOVE x TO y 给y赋值x。
*定义变量
*     变量名称    变量类型和长度 变量类型是n(数字)长度是10
DATA lv_nur TYPE n LENGTH 10.
lv_nur = 10."变量可以直接赋值
WRITE lv_nur."由于变量长度是10,输出的时候会在前面填0输出十位
WRITE / lv_nur NO-ZERO."不输出0

MOVE 888 TO lv_nur."也可以用MOVE x TO y 对y赋值
SKIP 3."插入n个空白行
Uline."插入一条线 只能插入一行,不能像SKIP那样用
WRITE lv_nur NO-ZERO.

 此段代码运行结果显示: 

四、系统变量

系统变量都是SY-的形式,常用系统变量如下面代码所示。可以将这些值赋给其他变量。

*系统变量*
WRITE: / 'SY-SUBRC',SY-SUBRC,"系统执行指令之后是否成功,0-成功,其他-有问题
       / 'SY-DATUM',SY-DATUM,"系统当前日期
       / 'SY-UZEIT',SY-UZEIT,"系统当前时间
       / 'SY-TABIX',SY-TABIX,"当前在内表的第几行
       / 'SY-INDEX',SY-INDEX,"当前循环的次数
       / 'SY-LANGU',SY-LANGU,"系统登录语言
       / 'SY-MANDT',SY-MANDT,"当前的集团代码
       / 'SY-TCODE',SY-TCODE,"当前的TCODE
       / 'SY-UNAME',SY-UNAME."当前登陆账号

 此段代码运行结果显示:  

五、时间类型变量

1、日期:日期可以直接赋值,按照年月日格式(YYYYMMDD),对于日期要加上''引号。输出的时候可以调整格式,也可对日期进行加减法运算,单位是天。

*日期的定义和输出*
DATA lv_date TYPE D.
lv_date = SY-DATUM."等于当前系统时间,参考系统变量
WRITE :'lv_date:',lv_date,/
       'lv_date DD/MM/YYYY:',lv_date DD/MM/YYYY,/"可以通过这种方式进行输出格式调整
       'lv_date YYMMDD:',lv_date YYMMDD.

*日期可以直接加减*
DATA tomorrow TYPE D.
tomorrow = lv_date + 1."日期按照天数进行加减
WRITE / tomorrow DD/MM/YYYY.

DATA past TYPE D.
past = lv_date - 365."日期按照天数进行加减
WRITE / past DD/MM/YYYY.

 此段代码运行结果显示:  

 2、时间:时间可以直接赋值,按照时分秒格式(HHMMSS),时间要加上''引号。输出的时候可以调整格式,也可对时间进行加减法运算,单位是秒。

write后的数字只是表示字符串长度,太短输出不了,没有其他含义,可以自己试试。

*时间的定义和输出*
DATA lv_time TYPE T.
*lv_time = 162430.
lv_time = SY-UZEIT."使用系统时间定义
WRITE :  lv_time."两个下横线
WRITE : /(60) lv_time USING EDIT MASK 'Now time is  __:__:__'."两个下横线

DATA future TYPE T.
future = lv_time + 60."按秒算的 一分钟
WRITE : /(30) future USING EDIT MASK 'Future time is  __:__:__'.

DATA past TYPE T.
past = lv_time - 3600."按秒算的 一个小时
WRITE : /(25) past USING EDIT MASK 'Past time is  __:__:__'.

  此段代码运行结果显示:  

3、时间戳:按照系统当前日期+时间组成时间戳。

*时间戳 日期+时间*
DATA lv_timestamp TYPE timestamp.
GET TIME STAMP FIELD lv_timestamp."赋值当前系统时间给时间戳
WRITE lv_timestamp.
WRITE : / '带有Time Zone(时区)的显示',lv_timestamp TIME ZONE SY-ZONLO.
WRITE / SY-ZONLO."当前系统时区

  此段代码运行结果显示:   

六、引用类型 

DATA 变量名 TYPE REF TO 变量类型 <VALUE IS INITAIL>.

 ABAP中的引用类型区别与C/C++等,ABAP中的引用类型并不像C++中的引用(&)那样用于创建别名,而是通过 DATA 关键字和引用类型声明来创建引用。引用本身只存储内存地址,并且使用时不会直接修改原始数据的内容。只能在VALUE之后添加指定的IS INITIAL用于检查引用是否为NULL或者未指向任何对象。

*引用类型--参考变量*
DATA ref_1 TYPE REF TO I."先定义类型,没有分配内存空间
CREATE DATA ref_1."动态分配内存空间,ref_1 现在指向一个内存中的整数对象
ref_1->* = 888."通过 ->* 语法来访问 ref_1 指向的内存空间,且与变量名之间不能有空格
WRITE ref_1->*."输出必须这样写,表示对应的内存地址里面的内容

此段代码运行结果显示:  

七、常量 

CONSTANTS 常量名 <TYPE 常量类型> VALUE 默认值

注意这里的默认值是必填的

与其他语言类似,常量的值不可修改。

*常量*
CONSTANTS cv_num TYPE I VALUE 5.
WRITE : 'cv_num','=',cv_num.

此段代码运行结果显示:   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值