您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > ABAP 4语法集锦(中文版)
ABAP/4Training陳偉第1页(共43页)5/22/2020§.ABAP/4DATAELEMENT一.DataType(数据类型)C:字符(串),长度为1,最大有65535BYTES,初始值为:space,例:‘M’;D:日期,格式为YYYYMMDD,最大是’9999/12/31’,例:’1999/12/03’.F:浮点数,长度为8,例如:4.285714285714286E-01I:整数范围:-2^31~2^31-1N:数值组成的字符串:011,‘302’.P:packed数,用于小数点数值,例如:12.00542;T:时间,格式为HHMMSS,例如:’14:03:00’,’21:30:39’.X:16进制数,例如‘1A03’.二.变量宣告变量宣告包含name,length,type,structure等,语法如下:DATAF[length]type[value][decimals]其中:f:变量名称,最长30个字符,不可含有+,.,:()等字符;lengthtype:变量类型及长度;value:初值decimals:小数位数Example1:DATA:COUNTERTYPEPDECIMALS3,NAME(10)TYPECVALUE‘Delta’,S_DATETYPEDVALUE‘19991203’.Example2:DATA:BEGINOFPERSON,NAME(10)TYPEC,AGETYPEI,WEIGHTTYPEPDECIMALS2,ENDOFPERSON.另外,有关DATA宣告的指令还有:CONSTANTS(宣告常数)、STATICS(临时变量宣告).三.系统专用变量说明系统内部专门创建了SYST这个STRUCTURE,里面的字段存放系统变量,常用的系统变量有:SY-SUBRC:系统执行某指令后,表示执行成功与否的变量,’0’表示成功SY-UNAME:当前使用者登入SAP的USERNAME;SY-DATUM:当前系统日期;SY-UZEIT:当前系统时间;ABAP/4Training陳偉第2页(共43页)5/22/2020SY-TCODE:当前执行程序的TransactioncodeSY-INDEX:当前LOOP循环过的次数SY-TABIX:当前处理的是internaltable的第几笔SY-TMAXL:Internaltable的总笔数SY-SROWS:屏幕总行数;SY-SCOLS:屏幕总列数;SY-MANDT:CLIENTNUMBERSY-VLINE:画竖线SY-ULINE:画横线附注:1.SAP的全称是:SystemApplicationProductsinDataProcessing;2.ABAP/4的全称是:AdvancedBusinessApplicationProgramming;3.ABAP/4的路径为:ToolsABAP/4WorkBenchABPA/4Editor;4.ABAP/4每条语句以句号结束;5.ABAP/4中象=,,,+,-,*,/等符号左右都需要有至少一个空格;6.整行注释用’*’号,注释本行后面部分用’”’号;ABAP/4Training陳偉第3页(共43页)5/22/2020§OUTPUTTINGDATATOSCREEN一.WRITE语句ABAP/4用来在屏幕上输出数据的指令是WRITE指令,例如:WRITE:‘USERNAMEIS:’,SY-UNAME.二.指定屏幕输出位置指定输出位置的语句格式为:WRITE:[AT][/][pos][(len)]资料项[par]其中:/:在下一行输出pos:指定输出的行号;(len):指定输出位数(长度)par:指定显示格式参数,参数有:LEFT-JUSTIFIED资料靠左对齐CENTERED数据靠中间对齐RIGHT-JUSTIFIED资料靠右对齐UNDERg正对在数据项g的下面显示NO-GAP紧接着显示,不留空格USINGEDITMASKm:使用内嵌子元显示,如12:03:20USINGNOEDITMASK:不使用内嵌子元NO-ZERO:数字前面0的部分不显示NO-SIGN:不显示正负号DECIMALSd:显示d位小数EXPOENTe:F(浮点数)指数的值ROUNDr:四舍五入至小数点后r位CURRENCYc:币别显示DD/MM/YY:日期显示格式MM/DD/YY:YY/MM/DD:YY/DD/MMMM/DD/YYYY:DD/MM/YYYYYYYY/MM/DD:YYYY/DD/MM:例如1:WRITE:/10(6)‘ABCDEFGHIJK’.输出结果为:ABCDEF例如2:DATA:XTYPEIVALUE’11:20:30’,A(5)TYPECVALUE‘ABCDE’.ABAP/4Training陳偉第4页(共43页)5/22/2020WRITE:/XUSINGEDITMASK‘__:__:__’.WRITE:/XUSINGEDITMASK‘$___,___’.WRITE:/YNO-GAP.输出结果为:11:20:30$112,030ABCDEF四.显示图标:语法:WRITE:symbol-nameASSYMBOL.WRITE:icon-nameASICON.例如:INCLUDESYMBOL.INCLUDEICON.WRITE:/‘Phonesymbol:’,SYM_PHONEASSYMBOL.WRITE:/‘AlarmIcon:’,ICON_VOICE_OUTPUTASICON.要查看系统所提供有那些符号及图标,可选择’EDIT’下的’InsertStatement’,选择’Write’,接下来选择要查看的群组,如SYMBOL或ICON,接下来按’Display’即可.ABAP/4Training陳偉第5页(共43页)5/22/2020§INTERNALTABLE一.InternalTable的宣告ABAP/4中的InternalTable是一种DataStructure,类似于其它语言中的STRUTURE,它可以由几个不同类型的字段(field)组成,用来表示具有不同属性的某一事物,单独一笔资料表示某个事物,多笔数据表示具有相同属性的多个事物.例如:为了存取或记录某班的同学数据,我们创建如下的internaltable:DATA:BEGINOFSTUDENTOCCURS20,STD_IDTYPEN,NAME(10)TYPEC,AGETYPEI,BIRTHTYPED,SCORETYPEPDECIMALS2,ENDOFSTUDENT.此时我们已经创建了名叫STUDENT的internaltable,并且为它预先申请了能够存放20笔数据的Buffer(当然,如果存取数据不止20笔,程序执行时,会自动申请系统Buffer)Internaltable的定义有以下几种格式:格式一.DATA:BEGINOFinternaltableOCCURSn,field1TYPEtype1,[field2TYPEtype2,field3TYPEtype3,…]ENDOFinternaltable.格式二.TYPES:BEGINOFworkarea,field1TYPEtype1,[field2TYPEtype2,field3TYPEtype3,…]ENDOFworkarea.TYPESinternaltableTYPEworkareaOCCURSn.格式三.DATA:BEGINOFworkarea.INCLUDESTRUCTUREtablename.DATA:ENDOFworkarea.DATA:internaltableLIKEworkareaOCCURSn.ABAP/4Training陳偉第6页(共43页)5/22/2020二.APPENDLINE格式:APPEND[workareaTO]internaltable.举例一.(使用workarea)DATA:BEGINOFLINE,COL1TYPEI,COL2TYPEI,ENDOFLINE.DATAITABLIKELINEOCCURS10.DO2TIMES.LINE-COL1=SY-INDEX.LINE-COL2=SY-INDEX**2.APPENDLINETOITAB.ENDDO.LOOPATITABINTOLINE.WRITE:/LINE-COL1,LINE-COL2.ENDLOOP.执行结果为:1124举例二.(不使用workarea)DATA:BEGINOFITABOCCURS10,COL1TYPEI,COL2TYPEI,ENDOFITAB.DO2TIMES.ITAB-COL1=SY-INDEX.ITAB-COL2=SY-INDEX**2.APPENDITAB.ENDDO.LOOPATITAB.WRITE:/ITAB-COL1,ITAB-COL2.ENDLOOP.执行结果与举例一相同.举例三.(加入另一个Internaltable的元素)格式:APPENDLINESOFitab1[FROMn1][TOn2]TOitab2.将itab1的元素加入至itab2中,可选取自n1至n2的范围.APPENDLINESOFITABTOJTAB.三.COLLECTLINEABAP/4Training陳偉第7页(共43页)5/22/2020COLLECT指令也是将元素加入Internaltable中,与APPEND的区别是:COLLECT指令在非数值字段相同的情况下,将数值字段汇总.格式:COLLECT[workareaINTO]itabDATA:BEGINOFITABOCCURS3,COL1(3)TYPEC,COL2TYPEI,ENDOFITAB.ITAB-COL1=‘ABC’.ITAB-COL2=10.COLLECTITAB.ITAB-COL1=‘XYZ’.ITAB-COL2=20.COLLECTITAB.ITAB-COL1=‘ABC’.ITAB-COL2=80.COLLECTITAB.此时,internaltable中放的是2笔数据,分别为:ITAB-COL1ITAB-COL2‘ABC’90‘XYZ’20四.INSERTLINE将元素插入在指定的internaltable位置之前.格式:INSERT[waINTO][INITIALLINEINTO]itab[INDEXidx]或者:INSERTLINESOFitab1[FROMn1TOn2]INTOitab2INDEXidx其中:wa即workarea,工作区中的元素.[INITIALLINEINTO]:插入一笔初始化的记录.itab:internaltable[INDEXidx]:internaltable的记录号.(新加入的元素放在此记录前面)五.读取internaltable格式一:LOOPATitab[INTOwa][FROMn1TOn2][WHEREconditions]statementENDLOOP.格式二:READTABLEitab[INTOwa][INDEXidx/WITHKEYconditions]举例.(格式二)DATA:BEGINOFITABOCCURS10,COL1TYPEI,COL2TYPEI,ENDOFITAB.ABAP/4Training陳偉第8页(共43页)5/22/2020DO10TIMES.ITAB-COL1=SY-INDEX.ITAB-COL2=SY-INDEX*2.APPENDITAB.ENDDO.READTABLEITABINDEX3.(或者:READTABLEITABWITHKEYCOL1=3.)WRITE:/‘ITAB-COL1=‘,IT
本文标题:ABAP 4语法集锦(中文版)
链接地址:https://www.777doc.com/doc-5516726 .html