一、创建软件包(非必须)
通过事务码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或者未zhi'xinag'ren'he
*引用类型--参考变量*
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.
此段代码运行结果显示:
八、结构
此概念与C/C++中的结构体相似,它们都用于定义包含多个不同数据类型字段的复合数据类型。
但是在取结构中的某一个值的时候不是用“.”,而是用“-”。
1、常量的结构:
结构中的每一个常量都需要赋一个默认值。
CONSTANTS : BEGIN OF cs_info,
name TYPE C LENGTH 3 VALUE 'VIA',
age TYPE I VALUE 5,
bir TYPE D VALUE '20241105',
msg TYPE String VALUE '当用常量结构体时,每个值都需要赋一个默认值',
END OF cs_info.
ULINE.
WRITE : / '姓名',cs_info-name,/
'年龄',cs_info-age,/
'生日',cs_info-bir,/
'信息',cs_info-msg.
此段代码运行结果显示:
2、变量的结构:
*定义,类似于C的结构体*
TYPES : BEGIN OF ty_info,
name TYPE C LENGTH 8,
age TYPE I,
bir TYPE D,
msg TYPE String,
END OF ty_info.
*使用,区别为是用 - 来表示结构体中的变量而不是.*
DATA ls_info TYPE ty_info.
ls_info-name = 'VIA'.
ls_info-age = 23.
ls_info-bir = '22221122'.
ls_info-msg = '这是对VIA的描述'.
WRITE : '姓名',ls_info-name,/
'年龄',ls_info-age,/
'生日',ls_info-bir,/
'信息',ls_info-msg.
此段代码运行结果显示:
标签:WRITE,lv,SY,DATA,基础,语法,ABAP,info,TYPE From: https://blog.csdn.net/qq_55411102/article/details/143509579