SAP ABAP基本语法介绍_第1页
SAP ABAP基本语法介绍_第2页
SAP ABAP基本语法介绍_第3页
SAP ABAP基本语法介绍_第4页
SAP ABAP基本语法介绍_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1SAP ABAP基本语法介绍名词解释2SAPSystems ,Application,and Products in Data processingABAP(高级商务应用编程语言)Advanced Business Application Programming SAP ABAP编辑器3事务代码:SE38ABAP语法特点4由各自独立的语句构成。单词之间至少要用一个空格分隔。每个语句结束必须要用句号。一个语句可以跨多行,只要不遇到句号,就认为是一个延续的语 句,可以把多个语句放在一行。ABAP不区分大小写。关键字和用户操作数都一样,除了引号中的内容。支持分块缩进,便于阅读。注释:注释行由第一列

2、的星号(*)开头,并且必须写在第一 列,前面不能有空格(行注释)。编译器忽略注释行,不会执行在行末的注释用双引号(”)作为前导(部分注释)。ABAP语法特点5规范化打印机统一设置代码格式由于编程的时候随时切换大小写比较麻烦,可以在ABAP编辑器中 用“规范化打印机”按钮来自动转换通过链语句减少关键字重复输入如果连续多行的第一个关键字相同,可以使用链语句的方式减少输 入。第一个关键字后面用一个冒号表示链语句开始链语句的最后一句结束还是用句号,但是中间的分隔由句号改成逗 号。空格和换行跟基本语句一样,可以任意加。注意,这样的写法并不会提高执行效率,仅仅为了显示好看。程序类型6可执行程序 (程序类型

3、为 1)可执行程序的特点是可以直接执行,而无需事务码,这个也是一般报表开发最常用的程序类型。可执行程序包含一些预定义的过程块,比如 INITIALIZATION、AT SELECTION-SCREEN、START-OF-SELECTION、END-OF-SELECTION 等等,有一个后台系统程序会控制可执行程序,按照规定的顺序依次调用这些过程块。首先显示一个选择屏幕,最后输出一个列表。为屏幕绘制器画出的屏幕所用的模块池 (程序类型为 M)模块池包含了来自业务的屏幕模块的处理步骤,它只能通过事务码或者菜单功能调用。包含程序 (程序类型为 I)包含了不能独立运行的程序代码,它的作用主要是让程序变

4、得清晰和可以被重用,在其他程序里,用 INCLUDE 语句可以把一个包含程序加到程序里。最终的效果相当于用被包含的程序里的全部内容替换调 INCLUDE 语句程序类型7子程序 (程序类型为 S)这种类型的程序里只包含被外部 PERFORM 语句调用的程序块。也就是说,只包含形如 FORM . ENDFORM 块的程序代码,从外部程序里,用 PERFORM IN PROGRAM IF FOUND. 来调用。函数组 (程序类型为 F)这类程序包含了函数模块。函数组和函数模块用函数制作器进行管理,事务码 SE37。在创建函数组和函数模块时,函数制作器把程序类型设置为 F。包含了接口。类和接口池 (程

5、序类型为 J)接口都在类制作器中管理,事务码 SE24。类池 (程序类型为 K)包含了类。类和接口都在类制作器中管理,事务码 SE24数据类型和数据对象8形式上的变量描述叫做数据类型,由数据类型具体定义的变量叫做数据对象数据类型标准数据类型(预定义数据类型)、本地数据类型、全 局数据类型定义数据类型用关键字TYPES定义数据对象用关键字DATA数据类型:预定义类型9它是SAP内置的基本数据类型,所有其他数据元素和域都是由这些基本数据类型组合而成的。它可以分为完整的和非完整的。完整的数据类型指它包含了与类型相关的固定长度的信息D :日期类型,格式为YYYYMMDD,长度为8T :时间类型,格式为

6、HHMMSS,长度为6I :整数类型,长度为4字节F :浮点类型,长度为8STRING:变长字符串类型XSTRING:变长字节序列类型非完整的数据类型指它所对应的变量长度是在数据对象定义时指定的。C :字符串类型,定义变量时指定字符个数N :数字字符串类型,定义变量时指定数值字符个数X :字节序列类型,定义变量时指定字节数P :组合数值类型,定义变量时指定长度和小数点后位数数据类型:本地数据类型 10可以使用这些基本类型来定义更完整和更复杂的本地数据类型,但是它们只能作为当前程序的增强,这些定义可以用TYPES 语句来实现。 数据类型:全局数据类型 11在ABAP 字典中定义的类型,可以在整个

7、SAP 系统中使用。数据对象:变量12通常用DATA 语句来定义数据对象数据对象的类型可以是基本类型、本地类型或全局类型实际开发中更多的是参考现有的数据对象(LIKE)。 DATA myvar2 LIKE myvar1.数据对象:变量13可以使用VALUE 关键字来指定数据对象的初始值DATA number1 TYPE i VALUE 17.LENGTH 关键字也是指定变量长度DATA number2 TYPE c LENGTH 8.DATA number2(8) TYPE C.如果DATA 语句没有指定TYPE ,则默认用C 类型DATA myvar. 定义一个长度为1 个字符的C 类型变量

8、。如果非完整类型没有指定长度,则使用默认长度DATA myvar TYPE n. 定义一个长度为1的数字串类型变量。数据对象:固定数据对象14固定数据对象有一个固定值,在运行时不能改变。文字 和常数都属于固定数据对象文字是在程序里面写的固定值,可以分为数值文字(不使用单引号)和字符文字(用单引号括起来)。数值文字:123、-123字符文字:Hello、123.45、123.45E03 可以使用CONSTANTS 语句来定义常数,TYPE 的指 定方法跟基本数据对象一致,而VALUE 则是必须的,用来赋值。 CONSTANTS myc TYPE tname VALUE 文字| IS INITIA

9、L 如果可能的话,尽量减少使用文字,而多用常数,这样 可以给程序维护带来很大的便利。基本ABAP语句:赋值15程序开始时,程序内容被读到应用服务器的内存区,程 序中定义的数据对象也分配了相应的内存空间。可以使用MOVE 关键字来赋值。MOVE var1 TO var2.var2 = var1.如果var1 和var2 的数据类型不同,就存在类型冲突的可能性,这 时候如果存在转换规则 ,则会进行自动类型转换 。CLEAR 语句根据类型清除数据对象,恢复成默认值。基本ABAP语句:运算16ABAP 程序中,数学表达式可以进行任意多层嵌套( 20 + 10) * 10 + 10 / 2二元操作符包括

10、:+ :加法- :减法* :乘法/ :除法* :乘方DIV :整除忽略余数MOD(%) :取模需要注意,圆括号和操作符都是关键字,需要跟操作数之间至少用一个空格分开。基本ABAP语句:条件分支17使用IF的条件分支使用CASE的条件分支CASE 语句至少要包含一个WHEN。CASE 部分指定的字段内容会与每个WHEN 分支的值进行比较。在这两个语句结构中,条件比较都是从上往下的,如果 某个分支满足条件,系统会立即跳出ENDIF或ENDCASE提示:如果仅需要比较一个字段和多个值,建议使用 CASE,因为它更清晰而且性能较好。基本ABAP语句:循环和终止循环18使用DO的无条件循环DO 和END

11、DO 之间的语句块会无限运行,直到遇到条件控制的跳出循环语句如EXIT 等;在DO 语句中还可以指定最多运行的次数。使用WHILE的有条件循环在WHILE 和ENDWHILE 之间的语句块会一直执行,直到不再满足WHILE 后面所指定的条件。指定条件会在语句块执行前被检查。循环次数通过SY-INDEX这个系统字段来计算当前循环的次数,对于嵌套的循环来说,sy- index 这个字段保存的值是当前所在层的循环次数。终止循环CONTINUE(无条件退出当前循环)CHECK(有条件退出当前循环)EXIT(完全终止循环)内表19内表是一个数据对象,在运行时可以用内表保存多个相 同结构的数据ABAP运行

12、时系统动态的管理内表的大小每个独立的数据集合在内表中称为一个表项或者表行 而一行中独立的组件对应于内表中的字段或者列内表的行类型可以用任何数据类型和表项的行结构来声 明用内表是一个处理大量结构化数据的简单办法内表类型20标准表系统内建维护了表的行号(即索引),索引和键访问都是允许的。当经常用索引访问表的时候就选择标准表。排序表数据记录在表内自动以升序进行排列,索引是系统自动维护的,索引和键访问都可以用。如果经常使用键来访 问数据,或者希望数据能够自动排序时,就用排序表。 哈希表利用主键的哈希排序对数据记录进行快速访问,哈希表需要唯一主键,而且只能使用键访问。如果内表非常大 而且希望用主键访问,

13、就用哈希表创建内表21创建内表时,可以决定是想先用TYPES 语句创建内表数据类型 ,然后再根据类型创建对应的数据对象(内表),还可以直接使用 DATA 语句创建内表数据对象 。既可以创建带表头行的内表数据对象,又可创建不带表头行的内表数据对象。TYPES: BEGIN OF TY_STRU, FID1 TYPE C, FID2 TYPE N, END OF TY_STRU, TY_OUT TYPE TY_STRU OCCURS 0.DATA: GT_OUT LIKE TY_OUT, W_OUT LIKE TY_STRU.操作内表22需要一个与内表行结构相同的工作区来处理内表APPEND处理单

14、条记录相同往内表的最后追加一条记录,只能用于标准表INSERT向内表插入一条记录READ把表的指定行拷贝到结构中LOOP遍历内表MODIFY使用结构的内容重写表的指定行DELETE删除表的指定行COLLECT把结构中的内容累加到内表具有相同键的行上,只有非键字段才执行累加,并且只有非键字段 都是数值的时候才能执行这个语句OPEN SQL23它数据库无关并且保证了程序与数据库引擎无关使用Open SQL 可以在不同的数据库系统上兼容或者可以更换不同的数据库系统完全集成在工作台中,并且提供了对SQL 语句的语法检查还允许R/3 系统使用数据缓冲区OPEN SQL的目标数量及返回码24所有Open

15、SQL 命令都提供了关于数据库操作执行成功还是失败的返回消息。这个消息传输一个返回码给系统字段sy-subrc。返回码0 通常意味着操作成功完成。所有其他值意味着发生了错误。系统字段sy-dbcnt 显示了刚才的数据库操作实际执行所影响的记录数量。数据获取:单一表获取25SELECT SINGLE FROM INTO WHERE GROUP BY HAVING ORDER BY .SINGLE取一条记录SELECT SELECT 子句定义选择的结果是单行还是一个表、选择的是哪些列 、以及是否将排除相同的行。FROM FROM 子句指定即将从中选取数据的数据库表或视图 。INTO INTO 子句

16、确定即将读入选定数据的目标区 。 该子句也可 以放在FROM 子句之前。 如果没有指定INTO 子句,系统将使用表工作区。表工作区是由TANLES 语句自动创建的表头行。数据获取:单一表获取26WHERE WHERE 子句指定将按照指定的条件读取哪些行来作为选择(检索条件)。GROUP BY GROUP BY 子句从几行组成的组中产生了作为结果的单行 。一个组是在 中列出的列中有相同值的行的集合。HAVING 对GROUP BY 合并的结果集按条件过滤。ORDER BY DESCENDING/ASCENDINGORDER BY 子句为选定 =的行定义顺序 。数据获取:单一表获取27例子:DAT

17、A WA TYPE SFLIGHT.SELECT CONNID INTO WA-CONNID FROM SFLIGHT WHERECARRID = LH GROUP BYCONNID HAVING SUM( SEATSOCC ) 300 ORDER BY CONNID ASCENDING write: wa-connid.ENDSELECT.表连接:内连接28在关系数据库中,经常需要同时从多个数据库表读取数据到应用程序。在这种情况下,可以用一个SELECT语句从多个表中读取数据,并要求这些表中的数据都符合相同的条件。方法是使用以下连接表达式:SELECT .FROM INNER JOIN AS

18、 ON WHERE联接表达式把符合条件的中的每一行与中的行联接起来。这意味着通过连接始终要有来自右边表中的一行或多行连接到左边表的每一行。表连接:左连接29在内联接中,只有来自右边数据库表的一行或多行满足满足ON 条件 ,左边数据库表的相应行才包含在选择结果中。而左联接相反,即使右边的表中没有相应的行,也会读取左边数据库表或联接表的行。SELECT . FROM LEFT OUTER JOIN AS ON WHERE 和 与内联接中的规则和条件相同。OUTER为可选项。表联接的方式与内联接相同,只不过从中选取的所有行都包括在最终选择结果中。如果中不包含任何满足条件的行,系统将在选择结果中包含一

19、行,其中来自 的列为空。小练习表:MARC, MAKT输出字段:MARC-MATNRMARC-WERKSMARC-EKGRPMAKT-MAKTX查询条件:MARC-WERKS = 1000.MAKT-SPRAS = sy-langu.ZJOB_工号_01选择屏幕31选择屏幕做为程序和用户之间的接口选择屏幕用来输入查询数据的选择标准选择屏幕的文字可以维护成多种语言,并且系统自动根据登录语言选择显示文字系统进行类型检查,与输入字段类型不符的用户输入会被GUI 自动忽略,并从屏幕上删除选择屏幕可以单值(PARAMETERS)选择,还能使用多值(SELECT-OPTIONS)选择多个复杂数据选择屏幕:

20、PARAMETERS32PARAMETERS (length) TYPE/LIKE xxx DEFAULT LOWER CASE MEMORY ID OBLIGATORY AS CHECKBOX RADIOBUTTON GROUP MODIF ID MATCHCODE (length)对应PARAMETERS的名字,最多可以有8个字符,length对应参数 的长度。TYPE/LIKE xxx根据数据字典和本地数据对象DEFAULT 设置缺省值,如果指定了MEMORY ID ,系统会从SAP 内存中获取当前值并且自动在屏幕上显示LOWER CASE允许用户用大写或小写字母输入参数值选择屏幕:PA

21、RAMETERS33MEMORY ID 从全局 SAP 内存( SPA/GPA 参数)使用缺省值OBLIGATORY设置必输项AS CHECKBOX把屏幕元素定义成复选框,参数的值只能存放” ”(space)或”X”RADIOBUTTON GROUP 定义一系列单选按钮,的名字最长只能是4个字符,在一组单选按钮中只有一个被选中MODIF ID 将屏幕元素分配给修改组,对屏幕元素按组管理MATCHCOODE 分配匹配码对象 选择屏幕:SELECT-OPTIONS34使用SELECT-OPTIONS 语句创建一个复杂输入框,这会在程序中创建一个同名内表同时在屏幕上显示一个复杂输入框。用户输入的项会

22、自动填入内表中,内表有四个列: sign、option、low 和high 分别代表不同的意义:SignI(inclusive,包含),E(exclusive,排除)OptionEQ(等于)、NE(不等于)LE(小于等于)、LT(小于)GE(大于等于)、GT(大于)BT(在中间)、NB(不在中间)CP(包含模式)、NP(不包含模式)Low和high值的上下限范围选择屏幕:SELECT-OPTIONS35SELECT-OPTIONS for DEFAULT TO OPTION SIGN NO DISPLAY NO-EXTENSION NO INTERVALS复杂选择的名字对应数据库表列或者内部字

23、段DEFUALT 设置low字段值TO 设置high字段值选择屏幕:SELECT-OPTIONS36SIGN 设置SIGN的值NO DISPLAY设置选择屏幕元素不显示NO-EXTENSION屏蔽多个单选或多个范围选择NO-INTERVALS屏蔽选择屏幕中选择表的high 值,可以使用多重选择附加屏幕来输入范围格式化选择屏幕37指定空行,n对应插入的空行数目,可以是1到9SELECTION-SCREEN SKIP n指定下划线,POS对应开始的位置,对应下划线的长度SELECTION-SCREEN ULINE /POS MODIF ID 注释SELECTION-SCREEN COMMENT / FO

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论