1 / 14
文档名称:

ABAP基本语法.pdf

格式:pdf   大小:383KB   页数:14页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

ABAP基本语法.pdf

上传人:花开花落 2023/3/20 文件大小:383 KB

下载得到文件列表

ABAP基本语法.pdf

相关文档

文档介绍

文档介绍:该【ABAP基本语法 】是由【花开花落】上传分享,文档一共【14】页,该文档可以免费在线阅读,需要了解更多关于【ABAP基本语法 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:.
ABAP基本语法
目录


:
:




























:.







ABAP/4:AdvancedBusinessApplicationProgramming

Tables:表名[,表名].声明多个表时可用逗号分隔
当你声明了一个数据表的同时,系统也同时自动生成了一个和数据表同名的结构,
结构的变量集等于数据表里面的字段。

Data:v1[(l)][typet][decimalsd][value'xxx'].
v1是变量名。
(l)是变量的长度。
t是数据类型。
d是小数位。
'xxx'是缺省值。
如:datanum(10)typepdecimals3value''.
数据类型描述缺省长度最大长度可用字符缺省值
C字符型165536任意字符空
N数字文本1655360~90
D日期8(固定)-0~900000000
T时间8(固定)-0~9000000
X十六进制1655360~9,A~
数F
数据类型描述缺省长度最大长度最大小数位缺省值
I整型4(固定)-00
P十进制数816140

:
算术符描述:.
+加法
-减法
*乘法
/除法
**取幂
DIV整除
MOD取模
:
比较操作描述
v1=v2等于
v1<>v2不等于
v1>v2大于
v1<v2小于
v1>=v2大于等于
v1<=v2小于等于
v1betweenv2andv3在……之间
notv1betweenv2andv3不在……之间

total=10.
mess='thisisatest!'.
如果字符串中包括'号,用''进行付值,如:mess='thisisa''test''!'.

ifi=2.
write'i等于2'.
[else.
write'i不等于2'.]
endif.


'i=1'.
'i=2'.
['i<>1andi<>2'.]
endcase.

do[n]:.
[执行代码]
enddo.

while[条件].类似于VFP中的DOWHILE语句
[执行语句]
endwhile.

select*from数据表[where条件].
[操作语句]
endselect.
如:select*fromt000[wheremandt<200].
write:/t000-mandt,t000-mtext.
endselect.

selectsingle*from数据表[where条件].注:仅取出符合条件的第一
行记录
selectsingle字段from数据表into变量[where条件].

write:[/][定位][数据1][,[定位][数据2]]……
[/]为插入一行空行,注意单独write一个[/]和在其它数据之前加[/]的效果是
不一样的,单独的write[/]在插入空行后光标定位在空行的下面,在其它数据前
加[/]在插入空行后光标定位于所插的空行。



uline/。
uline和write‘|’一起使用可实现画表格的功能。





作用:定义一些不会改变的数据,如一年的月数、圆围率等。
语法:constantsc1[(l)][typet][decimalsd]value'xxx'.
或者:constantsc1likecvvalue'xxx'.
例如:constantspitypepvalue‘’.:.

(1)基本结构
data:beginof结构名,
f1[(l)][typet][decimalsd][value'xxx'],
f2[(l)][typet][decimalsd][value'xxx'],
……
endof结构名.
(2)结构中包含另一结构
data:beginof结构名,
f1[(l)][typet][decimalsd][value'xxx'],
f2[(l)][typet][decimalsd][value'xxx'],
f3like另一结构名,
……
endof结构名.
(3)定义结构的另一种写法:
databeginof结构名.
dataf1[(l)][typet][decimalsd][value'xxx'].
dataf2[(l)][typet][decimalsd][value'xxx'].
[includestructure另一个结构.]
:此种写法data后可以加冒号也可以不加
例如:
data:beginofperson,
educ(10)typec,
train(10)typec,
endofperson.
data:beginofemployee,
code(10)typec,
name(10)typec,
department(20)typec,
addresslikeperson,"person为另一个结构名
……
endofemployee.
employee-code='1001'.
employee-name='张三'.
employee-department='IT部'.
employee-person-educ='本科':.
employee-person-train='工程师'
write:/employee-code,employee-name,employee-department,employee-
person-educ.
write:/employee.

将结构定义成数据类型,这样在程序中可以象定义一个变量那样简单地定义一个结
构。语法同定义结构,只是把data换成types即可。
如:
types:beginofemployee,
code(10)typec,
name(10)typec,
endofemployee.
types:address(50)typec.
data:emptypeemployee.“使用TYPES定义的结构类型
data:myaddtypeaddress.“使用TYPES定义的变量类型
emp-code='1001'.
emp-name='张三'.
myadd='thisisaaddress'.
write:/emp.
write:/myadd.

tables:t000.
data:p(20)typec.
data:p1liket000."p1拥有了和t000相同的结构
data:p2liket000-mandt."p2的定义等同于t000中mandt这个字段
"的定义
data:p3likep."p3的定义和p相同,为20长度的字符

data:t111liket000occurs0withheaderline."定义一个和t000
一样的内表

要让一个变量成为可输入的参数,只需在定义变量时把data改为parameters即
可。
parametersp1likev1...
...[default'xxx'][obligatory][lowercase]
[ascheckbox][radiobuttongroupg].:.
使用DEFAULT后缀为参数指定缺省值。
使用obligatory后缀来标识参数为必输项。
输入参数默认会把输入的字符转为大写,如果要去掉该转换,使用lowercase后
缀。
使用ascheckbox后缀使参数以复选框的形式出现。使用复选框的参数一定为长度
为1的字符串,其内容只能为'X'或'',如:
parameters:p1ascheckbox.
parameters:p2ascheckboxdefault'X'.
使用radiobuttongroupg后缀使输入参数以单选框的形式出现。使用单选框的参
数一定为长度为1的字符串,其内容只能为'X'或'',如:
parameters:p1radiobuttongroup1.
parameters:p2radiobuttongroup1.
parameters:p3radiobuttongroup2.
parameters:p4radiobuttongroup2default'X'.

selection-screenbeginofblock块名withframetitle[text-(titlename)].
parameters:v1(10)typec.
parameters:aaliket000-mandt."将出现圆钮选择项,也可以自定义圆
钮选择项
parameters:v2(10)typecmatchcodeobjectzhlp.
这是自定义的圆钮选择项,在SE38中创建搜索帮助,zhlp为创建的搜索帮助
名称
selection-screenendofblock块名.
selection-screenuline.“在输入屏幕上画线

内表的定义和结构很相似,所差别只是内表需要指定记录的条数。
data:beginof内表名occursn,
f1[(l)][typet][decimalsd][value'xxx'],
f2[(l)][typet][decimalsd][value'xxx'],
...
endof内表名.
n为该内表的记录条数,不过当内表的记录数超过了该数值后,内表会自动的填大
这个数目,定义该数值只是为了系统的效率考虑,如果n为0,则系统会在一开始
就分配8KB的空间。
内表同时也可以以已存在的数据表或结构进行定义,格式为:
data:内表名like[结构名或数据表名]:.
例如:(使用like语句通常需要加上withheaderline,否则没有表头)
data:it1likest1occurs10."st1为一结构
data:it2liket000occurs0."t000为一数据表

append内表名.‘把表头的数据插入内表。
append结构名to内表名.‘把结构的数据插入内表,两者的结构必须一样。

loopatit[intowa][fromm][ton][whereexp].
Write:/it-字段1,it-字段2,……
endloop.
it为内表名
wa为结构名,如果不填,则读到表头。
m,n为开始和结束行,如果不填则为从第一条到最后条。
exp为取记录的条件。

READ功能为读取内表的某条记录。
readtableit[intowa][indexi|withkeykeyexp]
it为内表。
wa为将把数据读入的结构,如果没指定,则缺省为表头。
i是要读取的记录编号,即第几条记录。
keyexp是取记录的条件。如果合条件的记录有不止一行,则取第一行的记录。
以系统参数sy-subrc是否为0判断读取是否成功,sy-subrc为0则读取操作
成功。

(1)逐条记录的读入内表
select*fromt000.
appendt000toit.
endselect.
(2)把整批数据读入内表
select*from数据表intotable内表[whereexp]."结构需要相同
selectmandtmtextfromt000intotableitwheremandt>100."结构不
同的情况
selectmandtmtextfromt000appendingtableit."在内表中追加记录

clear内表."如果内表没有表头的话,该语句将会把内表的记录清空
clear内表[]."[]必须紧跟内表,且[]间不能有空格:.

deleteit(a)[indexn]“删除指定行记录
(b)[fromi][toj]“删除指定范围记录
(c)[whereexp]“删除符合条件记录
it为内表名
n,i,j为记录编号
exp为搜索条件

refresh内表.
该语句删除所有记录但保留表头,内表所占用的内存仍保留。

free内表.
该语句删除所有记录但保留表头,内表所占用的内存也被释放。

insert[wainto]it[indexn].
wa为结构。
it为内表。
n为记录编号。
记录会插入到编号的位置,原来的记录则向下移一位。

modifyit[fromwa]
[indexn]
[transportingc1c2...[whereexp]]
it为内表
wa为结构,缺省为使用表头。
n为记录编号
c1c2为内表中的字段,指明要更新哪些字段,缺省为全部更新。
exp为条件

sortit[byf1[ascending|descending].
it为内表
f1为要排序的字段
ascending升序排列(默认)
descending降序排列

,只能作用于LOOP中。:.
,会触发atfirst事件,At
first常用于画表头的作用,或者做表头的合计。
,atlast是在读取最后一条记录的时候触发
,
触发该事件
,
触发该事件
onchangeofit-p1[orit-p2……].当指定字段与上一条字段有所改变时,
触发该事件,onchange无分组合计的功能

,当运行到exit时,将直接运行循环后面的代码,当
exit在循环之外时,将直接结束程序的运行。

,但check有一个判断条件,仅判断条件不为
真时,才执行跳过循环下面的语句然后继续执行下一个循环。

sy-datum当前日期
sy-uzeit当前时间
sy-uname当前用户
sy-subrc当前操作返回值(0为成功)
sy-mandt当前的客户机
sy-tabix内表当前行的记录号

forms[tablest1t2...]
[usingu1value(u2)...]
[changingc1value(c2)...].
---
endform.
s为子程序名。
t1、t2、u1、u2、c1、c2为子程序的传递参数。

performs[tablest1t2...]
[usingu1u2...]
[changingc1c2...].
s为子程序名。:.
t1、t2、u1、u2、c1、c2为子程序的传递参数。
可用一个perform同时调用几个子程序,子程序间用逗号分隔,如performs1,s2.

(1)传递一个参数指针
变量存储于内存中的一块空间,变量指针为程序指出了内存的位置,传递变量指针
将使子程序中的变量和作为参数的变量使用同一个存储区域,也就是说,子程序中
的参数的内容变了,其相应的传递参数的内容也跟着一起改变。
使用usingv1及changingv1均为传递变量指针。
(2)传递一个变量值
和传递变量指针不同,传递变量值仅仅把变量的内容传给子程序,子程序中相应的
变量存储于另外的内存空间,也就是说,子程序中变量的值改变了,其相应的传递
参数的内容还是和原来一样。
使用usingvalue(v1)为传递变量值。
(3)传递一个变量值并返回
传递一个变量值并返回把一个变量值传给子程序,在子程序运行结束时,把子程序
中变量值的内容传给调用它的变量。与传递变量指针不同,原变量内容是在子程序
运行完成之后才改变,在子程序运行过程序中保持不变。
使用changingvalue(v1)传递一个变量值并返回。
(4)传递一个内表
内表同样可以作为一个变量进行传递,内表使用指针的模式进行传递。
使用tablesitstructurex或tablesitlikex传递内表,x为结构或表。

(1)initialization事件
程序最开始发生的事件,可以进行初始数据的处理。
REPORTz_temp.
tables:t001.
parameters:ch(50)typec.
initialization."该语句不能包含在selection-screen语句中
ch='thisisatestfortheinitialization!'.
start-of-selection.
write:ch.
以上代码在程序运行开始就为变量ch进行付值,该事件在输入参数之前就已经发
生。
(2)start-of-selection事件
在输入参数完成之后,运行该事件,在该事件中主要进行数据的处理。
(3)end-of-selection事件:.
发生在start-of-selection之后的事件,在该事件中主要进行数据的输出显示。
REPORTz_temp.
tables:t001.
data:ch(50)typec.
end-of-selection.
write:/'end-of-selection'.
start-of-selection.
write:/'start-of-selection'.
不管按什么顺序书写代码,start-of-selection里的代码一定会在end-of-
selection之前处理。
(4)top-of-page事件
该事件主要处理表头的数据,在top-of-page中显示的内容一定会出现在每一页的
开始。
REPORTz_tempnostandardpageheadingline-count6(2).
start-of-selection.
do100times.
write:/'thisisatest!'.
enddo.
top-of-page.
write:/'top-of-page'.
uline.
(5)end-of-page事件
该事件主要处理表尾的数据,在end-of-page中显示的内容一定会出现在每一页的
表尾,注意必须有定义页尾留空行数的时候才可显示该事件中显示的内容。
REPORTz_tempnostandardpageheadingline-count6(2).
start-of-selection.
do100times.
write:/'thisisatest!'.
enddo.
end-of-page.
uline.
write:/'end-of-page'.
write:/'end-of-page2'.

可以使用exit,check,stop事件跳过事件,在不同的事件中,以上的语句会有不同
的表现。:.
在所有事件中:
check离开当前事件并继续进行下一个事件的处理。
stop离开当前事件并直接跳到end-of-selection事件。
在start-of-selection之前的事件:
Exit和check都离开当前事件继续处理下一个事件。
在start-of-selection之中及之后的事件:
Exit立即进行输出的显示。
Check离开当前事件并继续处理下一个事件。

查询内表有多少条记录:
describetabletmp_gongsilinesiReccount.
查询一个表的字段条件属于另一个内表字段值的记录:
selectaafrom表2intoi_tab1.
selectaafrom表1into临时表forallentriesin
i_tab1whereaa=i_tab1-aa.
concatenate'aaa''bbb'into'aaabbb'.字符串相加
REUSE_ALV_GRID_DISPLAY输出表格函数
"EQLEGECPBTNELTGTNPNB"

sy-uzeit:获取系统时间。
sy-datum:获取系统日期。
shiftstring:左移字符串。长度减1。
concatenate:连接字符串。
split:拆分字符串。
search:查询字符串。
replace:替换字符串。
condense:删除多余的空格。
translate:转换字符格式,如将'ABC'转换为'abc'
converttext:创建一个可排序的字符串。
overlay:用一个字符串覆盖另一个字符串。
strlen:字符串长度。
abs:取绝对值。
cos、sin、tan:取三角函数值。
acos、asin、atan:反三角函数。
cosh、sinh、tanh:双曲函数。:.
exp:e的幂函数。
Log:底数为e的对数。
log10:底数为10的对数。
sqrt:平方根。
sign:返回参数符号。
trunc:返回参数的整数部分。
frac:输入参数的小数部分。
ceil:返回不小于参数的最小整数。
floor:返回不大于参数的最小整数。

最近更新

幼儿园体育设计方案(三篇) 5页

商贸企业安全生产标准化管理-危险源辨识与风险.. 20页

团结互助高中作文 6页

2023年安全员之A证继续教育考试题库附完整答案.. 115页

厦门航空空乘服务理念 6页

三年初中生活的作文 7页

2023设计师个人工作计划范文(九篇) 14页

2023年施工员之装修施工基础知识题库含答案【.. 82页

2023年质量员之设备安装质量基础知识考试题库.. 33页

2023年质量员继续教育考试题库及参考答案【培.. 112页

2023年初级管理会计之专业知识考试题库附答案.. 104页

2023年质量员考试试卷【预热题】 41页

排比句和比喻句大全 4页

2023年施工员之土建施工基础知识考试题库含答.. 70页

LTE知识竞赛题库考试题库附答案【综合题】 88页

安全员之C证(专职安全员)考试题库及参考答案.. 111页

父亲丧假请假条范文 2页

2023年施工员(装饰施工专业管理实务)题库含.. 83页

2023年标准员之专业管理实务考试题库(综合题.. 70页

施工员之设备安装施工基础知识考试题库及完整.. 62页

2022年08月广东珠海市金湾区卫计系统事业单位.. 87页

诗朗诵我们一起成长 3页

2023年二季度护理三基考试试题 7页

2022年党规党纪知识测试题和答案 12页

贵州省普通高中学生学籍登记表(共1页) 1页

医院消防应急演练记录 4页

民兵之家建设先进事迹 10页

广西省地图PPT模板 20页

六年级下期信息技术期末试题及答案 1页

走进《易经》 PPT课件 49页