版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ABAP基础知识ABAP的句法规则ABAP程序是由若干单独的语句组成的每个语句用句点结束语句的第一个单词一般为关键字语句中单词之间至少要用一个空格隔开语句可以缩进一句语句可由多行组成在一行中可以有多个语句ABAP/4基本语法数据声明控制和计算数据库访问ABAP/4基本语法--数据基本数据声明结构内部表ABAP/4基本语法--基本数据声明ABAP/4基本语法--预定义类型的值域数据类型初始长度有效长度初始值值域C11-65535‘...’-N11-65535‘...’-D88‘00000000’-T66‘000000’-X11-65535X’…’-I440-231-1~231-1P81-160根据长度和小数点位置而定F88010-307~10308ABAP/4基本语法--基本类型的转换规则ABAP/4基本语法--简单的变量定义示例DATA:W_CHARTYPEC,“1位长度的字符变量
W_MULCHAR(20)TYPEC,“20位长度的字符变量
W_INTERGERTYPEIVALUE10,“整型变量,并赋上了初值10W_FLOATTYPEFVALIE1.2E-10,“浮点数
W_DATETYPEDVALUE‘20030312’,“日期
W_TIMETYPETVALUE‘123212’,”时间
W_NUMBERTYPEN,“1位数字变量
W_MULNUM(10)TYPEN,“10位数字变量
W_QUANTYPEP,“缺省有3位小数的变量
W_CURRTYPEPDECIMAL2.“固定2位小数的变量DATA:W_CHAR_REFLIKEW_CHAR,“和上面定义的W_CHAR一样
W_MATNRLIKEMARA-MATNR.“和标准表MARA中字段MATNR一样ABAP/4数据对象--结构结构声明同样有两种方法:DATA:BEGINOF<结构名>,<项目1>,<项目2>,……<项目n>,ENDOF<结构名>.DATA:<结构名>TYPE|LIKE<结构|表>.ABAP/4数据对象--结构示例“直接声明DATA:BEGINOFSTR_STUDENT,NAME(40)TYPEC,BIRTH_DATETYPED,BIRTH_TIMETYPET,HEIGHTTYPEP,WEIGHTTYPEI,ENDOFSTR_STUDENT.“LIKE或TYPEDATA:STR_STUDENT_REFLIKESTR_STUDENT,STR_MARALIKEMARA.“特殊的用法,在自己的结构中包含别的结构DATA:BEGINOFSTR_STUDENG2.INCLUDESTR_STUDENT.DATA:CLASS(2)TYPEN,DIRECTOR(40)TYPEC.DATA:ENDOFSTR_STUDENT2.ABAP/4数据对象--内部表概念 内表是一种临时的数据表,它并不建立在DatabaseServer上,而是建立在本地内存空间中,所以它不占用系统资源,而且存取速度快。正因为这些特性,使得内表在ABAP编程中显得相当的重要。特征内部表是ABAP/4中最核心的处理对象内部表是用来处理(增加、查询、修改、删除)一系列具有相同结构的数据的内部表涵盖了在其它编程语言中数组的功能内部表仅在ABAP/4程序运行时在内存空间里存在内部表是自动化的对象,它自动完成相关的内存管理ABAP/4数据对象--内表的分类内表可以分為序表和无序表(hashtable),有序表又分为标准表和排序表。这三种表在使用中各有区别,一般我们未特别指明的情况下都是用的标准表。标准表是以Index来进行排列的,我们可以使用Index和Key来访问它。排序表是以Key来进行排列的,同样的,我们也可以使用Index和Key来进行访问。无序表是(hashtable)不按照任何规则进行排列的,对它的访问只能按照Key来进行。内部表的声明1内部表的声明和结构的声明很相似,差别在于声明中有表明内部表身份的关键字OCCURS
例:
DATA:BEGINOFT_STUDENTOCCURS0,NAME(40)TYPEC,BIRTH_DATETYPED,BIRTH_TIMETYPET,HEIGHTTYPEP,WEIGHTTYPEI,ENDOFT_STUDENT.DATA:T_MARALIKEMARAOCCURS0.内部表的声明2语法DATA:<itab> TYPE<itabkind>OF<linetype> [WITH{UNIQUE|NON-UNIQUE}KEY<keydef>] [INITIALSIZE<n>] [WITHHEADERLINE].例:TYPES:BEGINOFstruct,
carrid LIKEspfli-carrid,
connid LIKEspfli-connid,
cityfrom LIKEspfli-cityfrom,
fldate LIKEsflight-fldate,
seatsmax LIKEsflight-seatsmax,ENDOFstruct.DATA: itab TYPETALBEOFstructWITHHEADERLINE,
wa_itabTYPEstruct.数据库访问ABAP/4访问数据库有两种方式:OpenSQLOpenSQL是SAPABAP/4语言中一系列访问数据库的语法的集合NativeSQLNativeSQL是ABAP/4语言中提供的一种直接执行R/3底层数据库的机制,一般情况下不建议使用OpenSQL读取数据
SELECT变更数据
INSERTUPDATE/MODIFYDELETESELECTSELECT
<result>
INTO
<target>
FROM
<source>
[WHERE
<condition>]
[GROUPBY<fields>]
[HAVING
<cond>]
[ORDERBY<fields>].INSERTINSERTINTO<target><lines>.UPDATEUPDATE<target><lines>.MODIFYMODIFY<target><lines>.DELETEDELETE[FROM]<target><lines>.INNERJOINSELECT <t1>~<fieldlists> <t2>~<fieldlists> INTO ...FROM <t1>INNERJOIN<t2> ON <t1>~<pk1>=<t2>~<pk1> ...WHERE ...使用INNERJOIN,只有在<t1>和<t2>中都存在的记录才会被取出来。Left/RightOUTERJOINSELECT <t1>~<fieldlists> <t2>~<fieldlists> INTO ...FROM <t1>{LEFT|RIGHT}OUTERJOIN<t2> ON <t1>~<pk1>=<t2>~<pk1>...WHERE ...使用LEFTOUTERJOIN,以<t1>为主表关联<t2>,如果<t1>有的数据而<t2>不存在,则<t2>的字段以NULL值填充。RIGHTOUTERJOIN相同,不过是以<t2>为主表来关联<t1>。内部表的操作1.APPEND
APPEND[waTO|INITIALLINETO]itab.
APPENDLINESOFitab1[FROMidx1][TOidx2]TOitab2.
APPEND[waTO]itabSORTEDBYf.
APPEND语句用来把表头或工作区里的内添加到<itab>的末尾。内部表的操作2.INSERT INSERT [waINTO|INITIALLINEINTO]itab [INDEXidx]. INSERT [waINTO|INITIALLINEINTO]TABLEitab. INSERT LINESOFitab1[FROMidx1][TOidx2]
INTOitab2[INDEXidx3]. INSERT LINESOFitab1[FROMidx1][TOidx2]
INTOTABLEitab2. INSERT语句用来把表头或工作区里的内容添加<itab>的指定位置。 如果INDEX被指定,该语句将会将记录插入到指定置。 如果INDEX未指定,对标准表记录会被添加到末尾,对排序表记录会自动按照Key进行排序。内部表的操作3.MODIFY MODIFYitab [FROMwa] [INDEXidx] [TRANSPORTINGf1...fn].
MODIFYTABLEitab [FROMwa] [TRANSPORTINGf1...fn].
MODIFYitab [FROMwa] TRANSPORTINGf1...fn WHEREcond.
MODIFY语句可以根据指定的Index或Key来把表头或工作区的内容修改到<itab>中的相应记录。当然,指定Index或Key的记录首先必须在<itab>中存在。内部表的操作4.COLLECTCOLLECT[waINTO]itab.Addition:...SORTEDBYf例:TYPES:BEGINOFCOMPANY,
NAME(20)TYPEC,SALES
TYPEI,
ENDOFCOMPANY.DATA:COMP
TYPECOMPANY,
COMPTABTYPEHASHEDTABLEOFCOMPANYWITHUNIQUEKEYNAME.COMP-NAME='Duck'.
COMP-SALES=10.COLLECTCOMPINTOCOMPTAB.COMP-NAME='Tiger'.COMP-SALES=20.COLLECTCOMPINTOCOMPTAB.COMP-NAME='Duck'.
COMP-SALES=30.COLLECTCOMPINTOCOMPTAB.
结果:
NAME
|SALES
---------------
Duck
|
40
Tiger
|
20
内部表的操作5.READ READTABLEitab FROMwa[additions].
READTABLEitab WITHTABLEKEYk1=v1...kn=vn
[additions].
READTABLEitab WITHKEYk1=v1...kn=vn
[BINARYSEARCH][additions].
READTABLEitab INDEXi[additions].
内部表的操作6.LOOP LOOPATitab.
LOOPATitabINTOwa.
LOOPATitabASSIGNING<fs>.
Additions: 1....FROMn1
2....TOn2
3....WHERElogexp
4....TRANSPORTINGNOFIELDS ENDLOOP.
内部表的操作7.AT
ATNEWf.
ATENDOFf.
ATFIRST.
ATLAST.
ENDAT内部表的操作8.DELETE
DELETEitab.
DELETETABLEitabWITHTABLEKEYk1=v1...kn=vn.
DELETETABLEitab[FROMwa].
DELETEitabINDEXidx.
DELETEitabFROMidx1TOidx2.
DELETEitabWHERElogexp.
DELETEADJACENTDUPLICATESFROMitab.
内部表的操作9.REFRESH
REFRESHitab.
REFRESHitabFROMTABLEdbtab.
REFRESHitabFROMSELECT-OPTIONS.
REFRESH用来清除一个内表内部表的操作10.DESCRIBE
DESCRIBETABLEitab.
Additions:
1....LINES
n
2....OCCURSn
3....KIND
k内部表的操作11.SORT
SORTitab.
...BYf1f2...fn
...ASCENDING
...DESCENDING
...ASTEXT
...STABLE
FORALLENTRIESSELECT <fieldlists> INTO ... FROM <t1>FORALLENTRIESIN<t2>WHERE <f1>=<t2>-<f1>...优化原则尽量减少检索出的记录数(使用WHERE子句过滤掉不需要的记录)尽量减少数据在ApplicationServer和DatabaseServer间的传输(列明所需要的字段,不要使用SELECT*这种写法)尽量减少查询语句的数量(多使用关联查询,避免使用嵌套查询)尽量优化检索的速度(利用数据表的索引)尽量降低DatabaseServer的负荷(使用内表做缓存)ABAP/4基本语法——计算赋值数学计算字符串操作赋值一般可以使用以下几种方法赋值:等号赋值:A=B.MOVE赋值:MOVEBTOA.WRITE赋值:WRITEBTOA.复位赋值:CLEARA.数学计算ABAP/4里支持以下数学计算:“一般的加、减、乘、除
A=B+C.A=B–C.A=B*C.A=B/C.“幂、取模、整除
A=B**C.A=BMODC.A=BDIVC.“数学函数(SIN、COS、TAN、ASIN、ACOS、ATAN、COSH、SINH、TANH、EXP、LOG、LOG10、SQRT、ABS、SIGN、CEIL、FLOOR、TRANC、FRAC等等)
A=SIN(B).A=COS(B).计算时可以是复合表达式,计算时遵循以下优先顺序:括号函数***/DIVMOD+-字符串操作STRLEN取长度CONCATENATE连接REPLACE替换CONDENSE压缩SHIFT移位TRANSLATE切换大小写SEARCH在字符串中查指定的内容SPLIT字符串分割字符串片断处理STRLEN<n>=STRLEN<c>.示例:DATA:W_CHAR(20)TYPECVALUE‘AT21’.DATA:W_LENTYPEN.W_LEN=STRLEN(W_CHAR).WRITEW_CHAR.WRITE/W_LEN.那么输出结果就为:AT214CONCATENATECONCATENATE<c1>...<cn>INTO<c>[SEPARATEDBY<s>].示例:DATA:W_RESULT(50)TYPEC,W_STR1(10)TYPECVALUE‘123’,W_STR2(15)TYPECVALUE‘ABC’,W_STR3(10)TYPECVALUE‘MK1’,W_DELIMITERTYPECVALUE‘/’.CONCATENATEW_STR1W_STR2W_STR3INTOW_RESULTSEPARATEDBYW_DELIMITER.WRITE:W_STR1,/W_STR2,/W_STR3,/W_RESULT.输出为:123ABCMK1123/ABC/MK1REPLACEREPLACE<str1>WITH<str2>INTO<c>[LENGTH<l>].示例:DATA:T(10)VALUE'abcdefghij',
STRINGLIKET,
STR1(4)VALUE'cdef',
STR2(4)VALUE'klmn',
STR3(2)VALUE'kl',
STR4(6)VALUE'klmnop',
LENTYPEIVALUE2.STRING=T.WRITESTRING.REPLACESTR1WITHSTR2INTOSTRING.WRITE/STRING.STRING=T.REPLACESTR1WITHSTR2INTOSTRINGLENGTHLEN.WRITE/STRING.STRING=T.REPLACESTR1WITHSTR3INTOSTRING.WRITE/STRING.STRING=T.REPLACESTR1WITHSTR4INTOSTRING.WRITE/STRING.输出结果为:abcdefghijabklmnghijabklmnefghabklghijabklmnopghCONDENSECONDENSE<c>[NO-GAPS].示例:DATA:STRING(25)VALUE'onetwothreefour',
LENTYPEI.LEN=STRLEN(STRING).WRITE:STRING,‘!’.WRITE:/'Length:',LEN.CONDENSESTRING.LEN=STRLEN(STRING).WRITE:STRING,‘!’.WRITE:/'Length:',LEN.CONDENSESTRINGNO-GAPS.LEN=STRLEN(STRING).WRITE:STRING,‘!’.WRITE:/'Length:',LEN.结果输出为:onetwothreefour!Length:
25onetwothreefour!Length:
18onetwothreefour!Length:
15SHIFTSHIFT<c>[BY<n>PLACES][<mode>].SHIFT<c>LEFTDELETINGLEADING<str>.SHIFT<c>RIGHTDELETINGTRAILING<str>.示例:输出结果为:DATA:TEMP(20)VALUE‘A213NALA2’,A213NALA2STRINGLIKETEMP,3NALA2STR(2)VALUE‘A2’.A213NALSTRING=TEMP.13NALA2WRITESTRING.SHIFTSTRINGBY3PLACESLEFT.WRITE/STRING.STRING=TEMP.SHIFTSTRINGBY2PLACESRIGHT.WRITE/STRING.STRING=TEMP.SHIFTSTRINGLEFTDELETELEADINGSTR.WRITE/STRING.TRANSLATETRANSLATE<c>TOUPPERCASE.TRANSLATE<c>TOLOWERCASE.示例:DATA:STR1(20)VALUE‘a21gFDFS123’,STR2(20)VALUE‘a21gFDFS123’.TRANSLATESTR1TOUPPERCASE.TRANSLATESTR2TOLOWERCASE.WRITE:STR1,/STR2.输出结果为:A21GFDFS123a21gfdfs123SEARCHSEARCH<c>FOR<str><options>.示例:DATA:STRING(30)VALUE‘Thisisasimplesentence’.SEARCHSTRINGFOR‘Thisis’.WRITESY-SUBRCSY-FDPOS.SEARCHSTRINGFOR‘SEN’.WRITESY-SUBRCSY-FDPOS.输出结果为:
40017SPLITSPLIT<c>AT<del>INTO<c1>...<cn>.示例:DATA:STR(30)VALUE‘Part1*Part2*Part3*Part4’,STR1(30),STR2(30),STR3(30),DEL(1)VALUE‘*’.SPLITST
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年建筑图纸安全培训内容系统方法
- 2026年冬季化工安全培训内容重点
- 2026年安全培训内容的评价实操要点
- 春播安全生产培训内容2026年专项突破
- 福州市平潭县2025-2026学年第二学期二年级语文第五单元测试卷(部编版含答案)
- 潍坊市诸城市2025-2026学年第二学期五年级语文第六单元测试卷(部编版含答案)
- 2026年核心技巧司机安全教育培训内容
- 三明市尤溪县2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 阜新市海州区2025-2026学年第二学期二年级语文第六单元测试卷(部编版含答案)
- 宜宾市南溪县2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 一年级数学10以内加减法计算专项练习题(每日一练共12份)
- 2026上海人保财险校园招聘笔试历年常考点试题专练附带答案详解
- 2026特种作业场内专用机动车辆作业考试题及答案
- (二模)苏北七市2026届高三第二次调研测试生物试卷(含答案)
- 2026云南昆明巫家坝建设发展有限责任公司校园招聘15人备考题库【a卷】附答案详解
- 2025年华峰重庆氨纶笔试刷完稳过的真题及解析答案
- 2026年渭南职业技术学院单招职业适应性测试题库含答案详细解析
- 医疗法律法规培训课件
- 科大讯飞深度研究报告
- 河道闸门应急预案(3篇)
- (正式版)DB37∕T 4863-2025 《数字经济发展评价指标体系》
评论
0/150
提交评论