您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > Java > abap基本语法汇总
一数据类型和对象在ABAP中,可以使用与标准数据声明相似的语法处理数据类型,而与数据对象无关。在程序中必须声明要使用的全部数据对象。声明过程中,必须给数据对象分配属性,其中最重要的属性就是数据类型。1.1基本数据类型数据类型默认大小有效大小初始值说明C11-65535SPACE文本、字符(字母数字字符)D88'00000000'日期(格式:YYYYMMDD)F880浮点数I440整型(整数)N11-65535'00...0'数字文本P81-160压缩号T66'000000'时间(格式:HHMMSS)X11-65535X'00'十六进制对算术运算的非整型结果(如分数)进行四舍五入,而不是截断。类型P数据允许在小数点后有数字。有效大小可以是从1到16字节的任何值。将两个十进制数字压缩到一个字节,而最后一个字节包含一个数字和符号。在小数点后最多允许14个数字。1.2系统定义的数据对象SPACE空白字符串SY-SUBRC系统执行传回值,0表示成功SY-UNAME用户SY-DATUM系统日期SY-UZEIT系统时间SY-TCODE当前执行程序的TransactioncodeSY-INDEX当前LOOP循环过的次数SY-TABIX当前处理的是InternalTable(内部表)的第几行SY-TMAXLInternalTable(内部表)的总行数SY-SROWS屏幕总行数SY-SCOLS屏幕总列数SY-VLINE画竖线SY-ULINE画横线SY-PAGNO当前页号SY-LINSZ当前报表宽度SY-LINCT当前报表长度SY-LISND列表索引页SY-LISTI上一个列表的索引SY-LILLI绝对列表中选定的行号SY-CUROW屏幕上的行光标列真实行号选择行的内容,长度为255当前行1.3确定数据对象的属性如果要查明数据对象的数据类型,或者要在程序的运行期间使用其属性,可使用DESCRIBE语句。语法如下:DESCRIBEFIELDf[LENGTHl][TYPEt[COMPONENTSn]][OUTPUT-LENGTHo][DECIMALSd][EDITMASKm].将由语句的参数指定的数据对象f的属性写入参数后的变量。DESCRIBEFIELDS语句具有下列参数:参数用途LENGTH确定字段长度TYPE确定数据类型OUTPUT-LENGTH确定输出长度DECIMALS确定小数位EDITMASK确定转换例程1.3.1确定字段长度要确定数据对象的长度,利用DESCRIBEFIELD语句使用LENGTH参数,如下所示:DESCRIBEFIELDfLENGTHl.系统读取字段f的长度,并将值写入字段l。1.3.2确定数据类型要确定字段的数据类型,利用DESCRIBEFIELD语句使用TYPE参数,如下所示:DESCRIBEFIELDfTYPEt[COMPONENTSn].系统读取字段f的数据类型,然后将值写入字段t。除返回预定义数据类型C、D、F、I、N、P、T和X外,该语句还返回2s对于带前导符号的两字节整型2b对于无前导符号的一字节整型2h对于内表2C对于组件中没有嵌套结构的结构2C对于组件中至少有一个嵌套结构的结构1.3.3确定输出长度要确定字段的输出长度,利用DESCRIBEFIELD语句使用OUTPUT-LENGTH参数,如下所示:DESCRIBEFIELDfOUTPUT-LENGTHo.系统读取字段f的输出长度,并将值写入字段o。1.3.4确定小数位若要确定类型P字段的小数位的个数,利用DESCRIBEFIELD语句使用DECIMALS参数,如下所示:DESCRIBEFIELDfDECIMALSd.系统读取字段f的小数个数,并将值写入字段d。1.3.5确定转换例程要确定ABAP/4词典中某字段的转换例程是否存在,如果存在,名称是什么,利用DESCRIBEFIELD语句使用EDITMASK参数,如下所示:DESCRIBEFIELDfEDITMASKm.如果ABAP/4词典中字段f的转换例程存在,则系统将其写入字段m,然后将系统字段SY-SUBRC中的返回代码设为0。可以像下面所显示的那样,在WRITE语句中将字段m直接用作格式模板:WRITEfUSINGEDITMASKm.如果字段f没有转换例程,则系统将返回代码设为4。二数据输出到屏幕2.1在屏幕上定位Write输出通过制定字段名称前面的格式规范,可以在屏幕上定位WRITE语句的输出:WRITEAT[/][pos][(len)]f.此处3斜线‘/’表示新的一行3pos是最长为三位数字的数字或变量,表示在屏幕上的位置3len是最长为三位数字的数字或变量,表示输出长度如果格式规范只包含直接值(即,不是变量),可以忽略关键字AT。2.2格式化选项对WRITE语句,可以使用不同的格式化选项。WRITE....f选项.(1)所有数据类型的格式化选项:选项用途LEFT-JUSTIFIED输出左对齐CENTERED输出居中RIGHT-JUSTIFIED输出右对齐UNDERg输出直接开始于字段g下NO-GAP忽略字段f后的空格USINGEDITMASKm指定格式模板mUSINGNOEDITMASK撤消对ABAP/4词典中指定的格式模板的激活。NO-ZERO如果字段仅包含零,则用空格代替它们对类型C和N字段,将自动代替前导零(2)数字字段的格式化选项:选项用途NO-SIGN不输出前导符号DECIMALSdd定义小数点后的数字位数。EXPONENTe在类型F字段中,在e中定义幂数ROUNDr用10**(-r)乘类型P字段,然后取整CURRENCYc按表格TCURX中的货币c格式化。UNITu按表格T006中为类型P字段所指定的单位u固定小数位数(3)日期字段的格式化选项:选项用途DD/MM/YY用户主记录中定义的分隔符MM/DD/YY用户主记录中定义的分隔符DD/MM/YYYY用户主记录中定义的分隔符MM/DD/YYYY用户主记录中定义的分隔符DDMMYY无分隔符MMDDYY无分隔符YYMMDD无分隔符2.3输出符号和图标使用下列语法,可以在屏幕上输出符号和R/3图标:WRITEsymbol-nameASSYMBOL.WRITEicon-nameASICON.符号和图标的名称(符号名和图标名)是定义系统的常量,这些常量在包含程序SYMBOL和ICON(尖括号是名称的一部分)中指定。这些包含程序也包含符号和图标的简短说明。输出符号和图标最简单的方法是使用语句结构。要使符号和图标对程序可用,必须在程序中输入恰当的包含程序或更易理解的包含程序LIST。2.4输出线和空行(1)水平线用下列语法,可以在输出屏幕上生成水平线:ULINE[AT[/][pos][(len)]].它等同于WRITE[AT[/][pos][(len)]]SY-ULINE.AT后的格式规范,与在屏幕上定位WRITE输出中为WRITE语句说明的格式规范完全一样。如果没有格式规范,系统则开始新的一行,并用水平线填充该行。否则,只按指定输出水平线。生成水平线的另一种方法,是在WRITE语句中键入恰当数量的连字符,如下所示:WRITE[AT[/][pos][(len)]]'-----...'.(2)垂直线用下列语法,可以在输出屏幕上生成垂直线:WRITE[AT[/][pos]]SY-VLINE.或WRITE[AT[/][pos]]'|'.(3)空行用下列语法,可以在输出屏幕上生成空行:SKIP[n].该语句从当前行开始,在输出屏幕上生成n个空行。如果没有指定n的值,就输出一个空行。(4)要将输出定位在屏幕的指定行上,使用:SKIPTOLINEn.该语句允许将输出位置向上或向下移动。2.5将字段内容作为复选框输出使用下列语法,可以将字段的第一个字符,作为复选框输出到输出屏幕上:WRITEfASCHECKBOX.如果字段f的第一个字符是一个“X”,就显示复选框已填充。如果字段f的第一个字符是SPACE,就显示复选框为空。该语句创建的复选框,默认状态是可输入的。就是说,用户可以通过单击鼠标来填充它们或使其为空。三赋值在ABAP/4中,可以在声明语句和操作语句中给数据对象赋值。在声明语句中,将初始值赋给声明的数据对象。为此,可以在DATA、常量或STATICS语句中使用VALUE参数。要在操作语句中给数据对象赋值,可以使用:6MOVE语句和WRITETO语句,对应于赋值运算符(=)3.1用MOVE赋值3.1.1基本赋值操作要将值(文字)或源字段的内容赋给目标字段,可以使用MOVE语句或赋值运算符(=)。MOVE语句的语法如下所示:MOVEf1TOf2.MOVE语句将源字段f1的内容传送给目标字段f2。f1可以是任何数据对象。f2必须是变量,不能是文字或常量。传送后,f1的内容保持不变。赋值运算符(=)的语法如下所示:f2=f1.MOVE语句和赋值运算符功能相同。3.1.2用指定偏移量赋值可以在每条ABAP/4语句中为基本数据类型指定偏移量和长度。在这种情况下,MOVE语句语法如下:MOVEf1[+o1][(l1)]TOf2[+o2][(l2)].将字段f1从o1+1位置开始且长度为l1的段内容赋给字段f2,覆盖从o2+1位置开始且长度为l2的段。在MOVE语句中,所有偏移量和长度指定都可为变量。3.1.3在字符串组件之间赋值描述的MOVE语句赋值方法适用于基本数据对象和结构化数据对象。另外,还有一种MOVE语句变体,允许将源字段串组件内容复制到目标字段串组件中。语法如下:MOVE-CORRESPONDINGstring1TOstring2.该语句将字段串string1组件的内容赋给有相同名称的字段串string2组件。对于每对名称,系统都执行MOVE语句,如下所示:MOVESTRING1-componentTOSTRING2-component.系统分别执行所有必要类型转换。该处理不同于包括整个字段串的赋值。在这种情况下,应用不兼容的字段串和基本字段所述的转换规则。3.2用WRITETO赋值要将值(文字)或源字段内容写入目标字段,可以使用WRITETO语句:WRITEf1TOf2[option].WRITETO语句将源字段f1内容写入目标字段f2。f1可以是任何数据对象,f2必须是变量,不能是文字或常量。写入后,f1内容保持不变。对于option,可以使用WRITE语句的所有格式化选项(UNDER和NO-GAP除外)。WRITETO语句总是检查用户主记录中的设置。例如,这些设置指定是将小数点显示为句号(.),还是逗号(,)。WRITETO语句并不遵循类型转换中所述的转换规则。目标字段解释为类型C字段。系统总是将源字段内容转换为类型C,它不将结果字符串转换为目标字段的数据类型,而直接写入目标字段。因此,不应使用数值数据类型的目标字段。3.2.1运行时指定源字段可以使用WRITETO语句在运行时指定源段。为此,需用括号将包含源字段名的数据对象名括起来,并将其放在源字段位置:WRITE(f)TOg.系统将赋给f的数据对象值放到g中。然而,如果要在运行时指定目标字段,则必须按使用字段符号中所述,使用字段符号。3.2.2用指定偏移量写入值可以指定每条ABAP/4语句中基本数据对象的偏移量和长度。WRITETO语句语法如下:WRITEf1[+o1][(l1)]TOf2[+o2][(l2)].将字段f1中从o1+1位置开始且长度为l1的内容赋给字段f2,覆盖从
本文标题:abap基本语法汇总
链接地址:https://www.777doc.com/doc-1335330 .html