ABAP总结.docx
- 文档编号:8792366
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:57
- 大小:57.11KB
ABAP总结.docx
《ABAP总结.docx》由会员分享,可在线阅读,更多相关《ABAP总结.docx(57页珍藏版)》请在冰豆网上搜索。
ABAP总结
1.引用类型z_ref数据对象myref在程序中的声明方式:
DATAmyrefTYPEz_ref.
CREATEDATAmyrefTYPEz_ref.
2.参照数据字典中的表类型生成内表对象或结构体:
DATAmytableTYPEz_table,”数据字典表类型,声明内表.
mylineTYPELINEOFz_table.”表类型的行结构,声明结构体.
3.取系统日期:
SY-DATUM,
4.取系统时间:
SY-UZEIT.0
5.系统字段定位:
SY-FDPOS.字符比较结果为真时,此字段将给出偏移量信息.
6.系统字段SY-FDPOS给出字符的位置信息.(P109)
7.系统字段SY-INDEX记录循环语句中的循环次数
8.操作内表行结束后系统字段SY-TABIX返回该行索引.对于所有行操作,如果操作成功,系统变量SY-SUBRC返回0,否则返回非0值.
9.系统用户名:
SY-UNAME.
10.SY-HOST?
屏幕序号:
sy-dynnr.
11.OK代码:
SY-UCOMM或SYST-UCOMM
12.屏幕组ID:
SY-DYNGR.
13.常量声明:
CONSTANTconst(len)TYPEtype|LIKEdobj[DECIMALSdec][VALUEval].
14.确定数据对象属性:
DESCRIBEFIELDf[LENGTHl][TYPEt[CONPONENTSn]][OUTPUT-LENGTHo][DECIMALSd][EDITMASKm][HELP-IDh].
15.数据赋值:
MOVEsourceTOdestination.或destination=source.
16.设定初始值:
CLEARF.
17.检查字段是否为初始值:
fISINITIAL….
18.检查字段是否被分配:
fsISASSIGNED…..
19.检查过程中的参数是否被实参填充:
pIS[SUPPLIED|REQUESTED]….
20.检查数据对象的值是否属于某范围之间:
f1BETWEENf2ANDf3…..
21.检查数据对象f的内容是否遵从某个选择表的逻辑条件:
finseltab….
22.WRITE:
/10g,”在10个空格后输出变量g
/(8)timeusingeditmask‘__:
__:
__’.”输出的变量time保持8位的长度.
23.将光标移动到下一行:
SKIP.
24.强制结束循环:
EXIT,STOP或REJECT.
25.循环的中止:
CONTINUE无条件中止当前循环并开始下一轮循环,CHECK条件为真时循环,为假时结束本次循环并开始下一轮循环,EXIT无条件中止并退出整个循环.
26.将字符串左移:
SHIFTstring.
27.连接字符串:
CONCATENATEs1s2…..snINTOs_dest[SEPARATEDBYsep].如果结果出现被截断的情况,将SY-SUBRC返回4,否则返回0.符号&用于在字字符串换行时的连接.
28.根据分隔符sep拆分字符串:
SPLITs_sourceATsepINTOs1s2……sn.使用内表操作可以避免被截断的情况:
SPLITs_sourceATsepINTOTABLEitab.此语句根据子串数目生成n行的内表.
29.循环输出内表的每一行数据:
LOOPATitabINTOtext.ENDLOOP.
30.替换字段内容:
REPLACEstr1WITHstr2INTOs_dest[LENGTHlen].字段SY-SUBRC的返回值为0时表示己成功替换.
31.确定字段长度:
[COMPUTE]n=STRLEN(str).
32.删除字符串中的多余空格:
CONDENSE
33.字符转换,如将ABC转换为abc:
TRANSLATE
34.创建一个可以排序的格式:
CONVERTTEXT.
35.用一个字符串覆盖另一个字符串:
OVERLAY
36.WRITETO赋值时将忽略数据对象的类型,而将其视为字符类型数据.
37.字符串比较中的换码字符:
#,用于转换比较时使用的通配符:
*或+.及进行区分大小写,空格的比较,如#A表示比较大写的A.
38.定位操作子串:
strName[+0][
(1)].
39.字段符号,数据引用:
动态数据对象.
40.子过程定义:
FORMsubroutine_nameUSINGparameters1parameters2….….ENDFORM.
41.子程序调用:
PERFORMsubroutine_nameUSINGactual_parameters1p2….(其中USING可换成CHANGING)
42.ULINE.输出下划线.
43.错误查看:
ST22
44.程序打包release:
SE01:
找到对应的程序,点开后点上面小汽车,再选中上面的后再点小汽车.点check.程序修改后需要重新打包.
45.制作T-CODE:
SE93,TCODE应按顺序编号:
ZMF+流水号,我的程序名
46.创建table:
t-code:
se11,attributes:
Deliveryclass:
C.开发类别:
ZFI,当自定义Fieldtype时,名称需为Z+…..格式.->设置技术属性(TechnicalSetting):
Logicalstorageparameters中Dataclass:
APPL1,Sizecategory:
4创建functiongroup:
SE80,创建好后将创建的TABLE挂接到functiongrouph上去:
用se11查出table,点utilites->tablemaintenancegenerator:
Authorizationgroups:
&NC&,Functiongroup中填刚才创建的功能组名称->onestep->overviewscreen中必须填未使用的number,此处screennumber与table是一一对应的关系,也可让点系统上面的按钮:
findscreennumber来自动搜索适合的scr.Number.->create,成功后,找到对应的functiongroup中的screennumber双击即可看到生成的代码.需要修改域名可在functiongroup中的elementlist或layout中.-->se93创建t-code,startobject选transactionwithparameters(parametertransaction)->defaultvaluesfor->transantion:
SM30->DefaultValues->nameofscreenfield:
viewname\update,value:
tablename\X.
47.field-sign:
field—option:
field-low:
表示选择条件中起始值
48.在where子句中如果只有一个表的话,可以不用指定表名.
49.获取用户IP地址及用户名:
callfunction'TH_USER_INFO'"GetuserIP,hostname
importing
hostaddr=iporg”转化前的IP地址
terminal=host”计算机名
exceptions
others=1.
"Conv.IPaddrtoformat'xxx.xxx.xxx.xxx'
callfunction'ZGJ_IPADR2STRING'"Conv.IPaddr
exporting
ipadr=iporg”转化前的IP地址
importing
string=ipdec.”转化后的最终需要的IP地址
50.删除内表中数据完全相同的行,只保留一行:
deleteadjacentduplicatesfromitab1COMPARING
51.spro:
后台设定
52.输出选择框write:
/itab1-flagascheckbox
第四章ABAP基础
4.1.5程序运行
1.程序内部调用,如下表:
功能
报表调用语句
事务调用语句
无返回调用
SUBMIT
LEAVETOTRANSACTION
调用并返回
SUBMITANDRETURN
CALLTRANSACTION
例:
REPORTz_calling_program.
START-OF-PROGRAM.
WRITE‘Thisprogramcallsanotherprogram.’.”此内容在输出界面看不到
SUBMITz_simple_program.”上面的输出被此程序覆盖.
如果改用SUBMITANDRETURN来调用则可以输出以上内容.
2.结束程序:
LEAVEPROGRAM.可在任意点强制结束当前运行的程序.
4.1.6内存管理
SAP程序同一个用户和系统可进行最多6个SAPGUI主会话.
4.2.1数据定义
TYPES:
BEGINOFt_staff,
S_no(3)typen,
Name(20),
ENDOFt_staff.
DATAstaffTYPEt_staff.
上例中定义了一个结构类型t_staff,并根据其声明了一个结构体对象staff.
数据类型中的扁平结构与纵深结构:
扁平类型:
运行时长度固定的类型.
纵深类型:
运行时长度可峦的类型.
4.2.2ABAP内置基本数据类型:
数据
类型
默认大小
有效大小
初始值
说明
示例
C
1
1-65535
SPACE
文本字符(串)
‘name’
N
1
1-65535
’00…0’
数字文本
‘0123’
T
6
6
‘000000’
时间(HHMMSS)
‘123010’
D
8
8
‘00000000’
日期(YYYYMMDD)
‘20080101’
I
4
4
0
整型(整数)
99
F
8
8
0
浮点数
5E+04
P
8
1-16
0
压缩数
12.91
X
1
1-65535X
‘0’
十六进制数
‘3A’
String
1
无限定
SPACE
字符串(长度可峦)
‘AString’
XString
1
无限定
SPACE
十六进制字符串
‘A3FF’
注意:
1.其中C,N,T,D,I,F,P,X为定长类型,即在运行期间长度不能改变.
2.类型T,D,I,F的数据存储长度是固定的,不能指定参照其生成的数据对象占用的内存字节数.
3.基于类型C,N,P,X生成的数据对象需要在声明时指定其长度.否则取默认值.
4.如果在声明一个数据对象时未指明其数据类型,则该数据默认为C类型.
5.类型I的数值范围:
-231到231-1的整数.如果运算时出现非整型结果则进行四舍五入取值.而不是截断小数.
6.类型P用于声明小数字固定的压缩数,其占据内存字节数和数值范围取决于定义时指定的整个数据的大小和小数点后位数,如果不指定小数字,则将其视为I类型数据.有效大小可以是从1~16字节的任意值,小数点后最多允许14个数字.
7,类型F为浮点数,浮点意思是数字在内存中以字节形式表示,数值范围:
1*10-307到1*10308,因系统将F类型转换为二进制数,所以可能出现舍入误差,若用户要求较高精度且数值较大时,应使用P类型数据.
8.长度可峦的内置类型String,XString是通过引用实际动态的数据对象的固定内存地址来操作.
4.2.3程序内部数据定义
参照自定义类型或内置类型生成数据的语法格式:
TYPES|DATA…TYPEl_type…
参照程序中已经声明的数据对象生成新数据语法:
TYPES|DATA…LIKEdobj…
3.结构类型和结构体
参照结构类型生成的数据对象称为结构体.
TYPES|DATA:
BEGINOFstructure.
k1[TYPEtype|LIKEdobj]…,
k2[TYPEtype|LIKEdobj]…,
…
kn[TYPEtype|LIKEdobj]…,
ENDOFstructure.
参照生成:
参照结构生成:
TYPES|DATAstructureTYPEstr_type|LIKEstr_dobj...
参照数据库表生成:
TYPES|DATAstructureTYPEdbtab.
4.表类型和内表
表类型的对象称为内表.
4.2.4数据字典中的类型
●数据元素(Dataelements),相当于ABAP中的基本类型和引用类型.
●结构(Structures),由数据元素字段构成,对应ABAP中的结构类型.
●表类型(Tabletypes),对应ABAP中的表类型.
数据字典中的数据类型与ABAP中的中数据类型对应关系:
数据字典类型
ABAP类型
运行长度
说明
ACCP
N(6)
6
会计结算周期
CHAR
C(n)
1~255
字符
CLNT
C(3)
3
集团,数据区域代码
CUKY
C(5)
5
货币代码
CURR(n,m)
P((n+1)/2)DECIMALm
1~17
货币金额
DATS
D(8)
8
日期
DECn,m
P((n+1)/2)DECIMALm
n(1~31)m(1~17)
数值计算
FLTP
F(8)
18
浮点数
INT1
X
(1)(类型b)
3
单字节整型数
INT2
X
(2)(类型s)
5
双字节整型数
INT4
X(4)(类型i)
10
四字节整型数
LANG
C
(1)
内部1位外部2位
语言代码
LCHR
C(n)
256~最大值
长字符
LRAW
X(n)
256~最大值
长位字符
NUMCn
N(n)
1~255
数值文字
PREC
X
(2)
16
精确度
QUANn,m
P((n+1)/2)DECIMALm
1~17
数量
RAWn
X(n)
1~255
位字符串
TIMS
T(6)
6
时间
VARCn
C(n)
255~最大值
长字符(仅V3.0前可用)
STRING
STRING
1~最大值
字符串
RAWSTRING
XSTRING
1~最大值
位字符串
UNIT
C(n)
2~3
单位
4.2.5程序中的数据对象
1.文字对象
当字符文字长度超过编辑器的一行时,可以使用”&”进行连接,避免因换行而产生的多余空格,如:
long=‘Thisis‘&
‘alongsentence’.
如果需要输出“’”,则需要在前面多加一个“’”转回愿意.
2.有名称的数据对象
常量声明:
CONSTANT:
const(len)TYPE|LIKEdobj[DECIMALSdec]VALUEval.
结构体常量声明(每个组件必须指定初始值):
CONSTANT:
BEGINOFstructure,
str1TYPE|LIKEdobj[DECIMALSdec]VALUEval,
str2TYPE|LIKEdobj[DECIMALSdec]VALUEval,
...,
strnTYPE|LIKEdobj[DECIMALSdec]VALUEval,
ENDOFstructure.
3.系统数据对象(见附表)
4.查明数据对象属性
DESCRIBEFIELDfLENGTHlen.此语句将字段f的长度写入变量len.
●LENGTH:
确定数据对象长度.
●TYPE:
确定数据对象类型.
●OUTPUT-LENGTH:
确定实际输出长度.
●DECIMALS:
确定P类型小数位长.
●EDITMASK:
确定在数据字典中定义转换例程.
●HELP-ID:
确定在数据字典中定义的F1帮助信息.
4.3基本数据操作
4.3.1数据赋值
●MOVEsourceTOincept.等介于:
incept=source.
●CLEARdobj.将数据对象dobj还原为初始值.
●结构体间赋值:
struct2=struct1.(组件结构相同).
●MOVE-CORRESPONDINGstruct1TOstruct2.(部分组件结构相同).
4.3.2类型转换(见附表).
4.3.3数值运算
1.算术运算
运算
数学表达式语句
关键词语句
加法
n=x+y.
ADDyTOx.
减法
n=x–y.
SUBTRACTyFROMx.
乘法
n=x*y.
MULTIPLYxBYy.
除法
n=x/y.
DIVIDExBYy.
整除
n=xDIVy.
无
取余
n=xMODy.
无
幂(乘方)
n=x**y.
无
两个结构体的同名字段之间可以整体进行算术运算:
ADD-CORRESPONDINGstruct1TOstruct2.
SUBTRACT-CORRESPONDINGstruct1FROMstruct2.
MULTIPLY-CORRESPONDINGstruct2BYstruct1.
DIVIDE-CORRESPONDINGstruct2BYstruct1.
以上将对两个结构体中的同名字段进行相应运算(非数值类型数据会引起错误).
2.数学函数
任意类型参数的函数列表:
函数名
说明
ABS(dobj)
返回参数绝对值
SIGN(dobj)
返回参数符号:
正数返回1,0返回0,负数返回-1.
TRUNC(dobj)
返回参数的整数部分
FRAC(dobj)
返回参数的小数部分
CEIL(dobj)
返回不小于输入参数的最小整数值
FLOOR(dobj)
返回不大于输入参数的最大整数值
注意:
函数名与左括号间不能有空格,括号与参数间必须有空格.
F类型参数的函数列表(其它类型参数将首先被转换为F类型).
函数名
说明
COS,SIN,TAN
三角函数
ACOS,ASIN,ATAN
反三角函数
COSH,SINH,TANH
双曲函数
EXP
底数为e(2.7182818285)的幂函数
LOG
底数为e的自然对数
LOG10
底数为10的对数
SQRT
平方根
4.3.4数据输出
输出格式化选项:
选项
应用类型
说明
LEFT-JUSTIFIED
所有类型
左对齐
CENTERED
所有类型
居中
RIGHT-JUSTIFIED
所有类型
右对齐
UNDERg
所有类型
输出直接开始于字段g
NO-GAP
所有类型
忽略输出时字段后的一位空格
USINGEDITMASKm
所有类型
指定数据字典中定义的格式模板m
USINGNOEDITMASK
所有类型
撤消对格式模板的激活
NO-ZERO
所有类型
用空格替代所有有前导零
NO-SIGN
数值类型
不输出前导符号
DECIMALSd
数值类型
输出d定义小数点后的数字位数,如需截断,则四舍五入
EXPONENTe
数值类型
对F类型字段在e>定义幂指数
ROUNDr
数值类型
用10的负r次方乘P类型字段,然后取整
CURRENCYc
数值类型
按系统表格TCURX中定义的格式将货币c格式化
DD/MM/YY|MM/DD/YY
时间日期
格式调整,”/”为用户主记录中定义的分隔符
DD/MM/YYYY,...(同上)
时间日期
格式调整,”/”为用户主记录中定义的分隔符
DDMMYY...(同上)
时间日期
格式调整,无分隔符
注:
用户主记录System->Userprofile->Owndata(SU01).
4.3.5逻辑表达式
通用逻辑表达式列表:
运算符
意义
EQ或=
等于
NE或<>或><
不等于
LT或<
小于
LE或<=
小于等于
GT或>
大于
GE或>=
大于等于
3.IS操作符
●...fISINITIAL...:
检查字段f是否为初始值.
●...fsISASSIGNED...:
检查字段符号是否被分配.
●...pIS[SUPPLIED|REQUESTED]...:
检查过程中的参数是否被实参填充.
4.BETWEEN操作符
●...f1BETWEENf2ANDf3...:
检查数据对象的值是否属于特定范围之间.
5.IN操作符(P110)
●...fINseltab...:
检查一个数据对象的内容是否遵从某个选择表的逻辑条件.
6.组合逻辑表达式
●AND:
与.
●OR:
或.
●NOT:
非.
注:
括号与操作数间至少要有一个空格,如:
IF(c>n)AND(c 4.4结构控制 程序代码分三种结构: ●顺序结构: 语句逐行执行. ●分支结构: 根据不同的条件执行不同语句块. ●循环结构: 反复执行某个语句. 4.4.1分支控制 1.IF/ENDIF结构: IF ELSEIF ...... ELSE. ENDIF. 注: 可嵌套. 2.CASE/ENDCASE结构: CASEf. WHENf11[ORf12OR...]. ...... [WHENOTHERS.] ENDCASE. 其中,f为变量,fij可以是变量或者固定值. 4.4.2循环控制 1.无条件循环 DO[nTIMES]. ENDDO. 说明: n为循环次数,可以是文字或变量,如果没有限定n值,则必须用EXIT,STOP或REJECT等语句强制结束循环.DO循环可嵌套,SY-INDEX为当前循环次数. 2.条件循环 WHILE ENDWHILE. 注: 可嵌套,其它同上. 3.循环中止 ●CONTINUE: 无条件中止当前
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ABAP 总结