您现在的位置:首页 - 新闻中心 - 顾问论坛
介绍一下ABAP/4编程的概念、方法以及一些应用编程的简单实例
时间:2013-01-04   浏览:2222次

 ABAP/4全称是Advanced Business Application Programming/4,它是由SAP公司开发的一种编程语言以用于应用程序的交互式开发,属于第四代编程语言。* R/3对象库  R/3对象库主要描述SAP应用软件与客户软件的数据环境;  * 屏幕生成器  屏幕生成器主要用来创建屏幕,如屏幕的布局、测试需求以及流逻辑(flow logic);  * 菜单生成器主要用来生成接口部件,如菜单条、菜单与功能键等;  * ABAP/4开发平台主要用来开发标准应用软件,你可以使用ABAP/4开发平台来创建你自己的应用软件,然后你就可以使用该软件既可以处理SAP R/3系统的数据库表也可以处理你自己的数据库表,具有相当大的灵活性;你可以联机创建ABAP/4程序,并且或者可以联机运行你的程序或者可以在后台不需要任何修改地运行你的程序。当使用联机编程技术来书写ABAP/4程序时,你可以创建模块池,这些模块在屏幕处理期间由屏幕处理程序来调用。另外,使用批输入可以自动地把受保护的数据传送给SAP系统,ABAP/4包含有符合CPI-C标准的通信程序的编程语句。下面,详细地介绍ABAP/4编程所涉及的一些术语、概念。  Program:ABAP/4程序;  Report:能够生成清单的ABAP/4程序;  ABAP/4 Module Pool:包含模块(采用联机编程)的ABAP/4程序;  List:ABAP/4程序(指Report)输出的清单;  以上这些术语主要用来区分不同类型的ABAP/4程序。使用ABAP/4编程时涉及两种功能,其一是报表功能,主要用于启动报表(Report),其二是ABAP/4开发功能,主要用来开发ABAP/4程序,这个功能也可以用来启动报表。那么ABAP/4的编程环境是怎样的呢?ABAP/4编程环境主要有带有语法检查的ABAP/4编辑器、联机帮助、ABAP/4调试器以及显示数据库及其表等功能模块。现在先简单地介绍ABAP/4程序结构:ABAP/4程序由三个部分组成,每一个ABAP/4程序必须或者以PROGRAM或者以REPORT语句打头;一般建议如下,REPORT语句用于ABAP/4 reports,PROGRAM语句用于一般的ABAP/4程序,全局数据声明必须在程序的起始部分的数据声明部分中,语句部分可以包含不同的处理部分以完成不同的处理功能。接着我们简要地介绍一下ABAP/4语句的语法,一般来说ABAP/4程序由一系列独立的语句组成,每个语句必须以句号结尾,句子中的第一个单词是关键词,词与词之间至少有一个或者以上的空格,语句可以缩进几列,也可以跨越几行,一般来说语句由四个单词组成,除第一个为关键词外,第二、三、四个单词一般为参数、字段、常量等。下面开始围绕ABAP/4的程序结构对ABAP/4的数据声明部分所涉及到的一些语法及语句部分所涉及到的主要为输出语句的语法作一介绍。ABAP/4数据声明语法  1、数据类型及其属性  ABAP/4数据类型主要有P(Packed number,标准长度为8字节,允许长度为1-16字节,以下类似)、I(Integer,标准长度与机器有关,1-16字节)、F(Floating point no.,标准长度与机器有关,1-16字节)、N(Numberic Text,1字节,1-max字节)、C(Text,1字节,1-max字节)、D(Data YYYYMMDD,8字节,8字节)、T(Time HHMMSS,6字节,6字节)与X(Hexadecimal,1字节,1-max字节)等数据类型,其中max为近似64000字节;在P类型字段中,一个字节存储两位数字,符号位存储在最后半个字节中,类型I定义为二进制数,取值范围为从-21477483648至-21477483647;一般来说,类型I用于计数器等,类型P用于商业计算,类型F用于数学计算,ABAP/4的数据域不得超过64000字节。  2、常量的定义  ABAP/4能够识别的常量有数字常量与文本常量两种,数字常量主要有数据类型P与I两种,文本常量主要有数据类型C与N,而其余的数据类型由于没有规定常量,则一律使用文本常量。注意,如果你要把一个带有小数点的字段值赋给字段类型P,那么你必须首先把它定义为文本串(如"2.17")。  3、数据的声明  在这里所说的数据(或者称为字段)相当于我们经常谈到的变量,数据的名称与变量的名称一样也有其命名规则。一般数据名称总是以字母作为首字符,余下的字符可以为字母也可以为数字,但除了可以使用下划线以外,不得使用任何其它特殊字符,并且长度不得超过30字节。另外,需要注意的是SPACE是预定义的字段,在ABAP/4语句中,参数名(即关键字的名字)不可以用作字段名;在声明数据时,如果没有指定类型,就缺省使用类型C;如果没有规定长度,那么就使用该类型的缺省长度,在声明字段名时,你也可以赋予字段相应的初始值(使用参数VALUE),当然在在VALUE后面,你仅可以指定常量。在声明同一类型的字段时,可以使用LIKE参数,被参照的字段既可以是内部字段,也可以是数据库中的字段;如果你使用LIKE参数来书写程序,那么该程序是很容易修改的,这是因为如果数据属性发生更改的话,你仅须在程序的一个地方进行改动,其它使用LIKE参数定义的数据其定义会自动发生改变;CLEAR语句可以把字段的值设置为与其类型相符的初始值,或者设置为数据字典中定义的初始值,需要注意的是CLEAR语句不会保存以VALUE参数所规定的初始值。在输出特定类型的字段时,如果在输出字段的输出格式中没有指定长度,就缺省使用标准输出长度;如果在输出格式中规定的长度超出了必须的长度,那么输出的值根据所规定的输出长度的具体数值或者左对齐或者右对齐;在类型P或者I的字段值输出时,先导的零被转换为空格,在千位数之间插入逗号;在输出浮点数时,可以使用WRITE语句的EXPONENT参数来确定指数值;使用参数DECIMALS,你可以在输出类型P,I或者F的字段时确定小数点后的位数,最后一位要取舍。  4、赋值  有许多ABAP/4语句可以用来给字段赋值,两个最为重要的是MOVE与COMPUTE语句,关键字COMPUTE是可选的,如果字段的类型与长度不匹配所赋的值,那么系统就会自动执行类型转换。另外,可以使用ADD、SUBSTRACT、MULTIPLY与DIVIDE语句进行简单的算术计算。类型转换的规则是这样的,如果类型C的字段值赋给类型P的字段,那么类型C的字段值仅允许+/-以及小数点。如果类型P的字段值赋给类型C的字段,那么就要格式化该数字值并且先导的零被转换为空格,当然如果你不要这种格式化的类型,那么你可以使用UNPACK语句;  5、算术表达式  一般来说关键字COMPUTE是可选的,且不限制括号内表达式的嵌套层次,运算符与括号被认为是单词,因此,你必须把它们用空格隔开;然而,对于函数来说,其括号中间必须跟有字段名,如a=(B+EXP(C)*E/SIN(3-G)是错误的算术表达式,而a=( B + EXP( C) * E / SIN( 3 - G )才是正确的算术表达式。在算术运算之前非数字值需要转换成数字值,运算符DIV与MOD是整数除法函数,STRLEN函数是返回字符串的长度。一般算术表达式只能使用于COMPUTE语句中。  6、系统字段  ABAP/4提供了一系列系统字段,编辑器命令SHOW SY允许你显示所有这些字段名及其定义的列表清单。你可以在程序中通过使用SY-<字段名>来引用系统字段;另外,你可以通过规定偏移量与长度来存取字段中的特定部分。注意,只有一些语句(如ASSIGN,WRITE...TO语句等)支持偏移量与长度以存取字段的特定部分。  7、计算日期  如果类型D的字段值赋给类型P的字段,那么ABAP/4就计算类型P字段的值为自1900年以来的天数。相反,如果类型P的字段值赋给类型D字段,那么ABAP/4就计算类型D的字段值为自1900年以来的年份。  8、PARAMETERS语句  PARAMETERS语句主要用来声明内部字段,与用DATA语句声明的字段相反,你可以在调用Report时在选择屏幕上为这些字段指定值,DATA语句的某些参数也可以使用PARAMETERS语句(如TYPE、LIKE、DECIMALS等)。尽管DATA允许你把初始值赋给带有VALUE的字段,PARAMETERS语句也允许你使用DEFAULT参数来设置缺省值。  9、字段符号  字段符号是一个非常重要的概念,相当于C语言中的指针。你可以使用FIELD-SYMBOLS语句来声明字段符号,在运行时,你可以使用ASSIGN语句来把某一个字段赋给字段符号,字段符号可以引用通过使用TABLES语句来声明的字段、字段串以及结构。10、字段的动态分配  使用ASSIGN语句,你也可以把一个仅在运行时才能知道的字段赋给字段符号,如果所要分配的字段是R/3对象库中的字段(用TABLES语句声明),那么你可以使用TABLE FIELD参数。这将会减少执行语句的所要化费的时间,因为系统不会查找整个内部表清单。另外,你可以通过检查系统字段SY-SUBRC的值来确认是否有一字段分配给了字段符号。如果括号内有一字段,则SY-SUBRC=0,反之,则为大于0的值。一般来说,动态ASSIGN语句需要化费更多的时间,因此,仅在某些需要的情况下使用。 输出语句WRITE语句可以说是最为常用的语句,因此了解其语法格式及使用是非常有必要的。WRITE语句以对应的数据类型的格式输出字段或者常量的内容,连续的多个WRITE语句可以写在同一个输出行上;当输出行满的时候,从下一行继续开始;SKIP语句产生空行。在输出语句中,你也可以规定输出值的输出格式,这允许你从一个新行开始以及可以确定起始列与输出长度。格式选项DD/MM/YYYY可以格式化日期字段以符合用户主记录中的信息,格式选项UNDER允许你可以立即在已经输出的值下面显示值(左对齐)。一般来说,WRITE的语法是这样的:WRITE ., 主要有/p(I)、/ Line feed、p 列的位置以及I输出长度,主要有字段或者常量,选项主要指格式选项,在书写WRITE语句时,格式规定必须在输出值前面。在ABAP/4编程中也会涉及到系统所提供的调试功能、使用SELECT语句查询数据、控制结构、数据结构、模块化技术、ABAP/4开发平台、SAP系统中的数据、逻辑数据库、特定报表的选择、只读数据库的存取以及后台处理等许多不同的强大的功能,这些功能的组成使得开发特定用户的需要成为可能,大大地提高了系统二次开发的可能性,使得系统的灵活性得到了很好的提高。01.31.2005

TAG:acj
上一篇:没有了下一篇:SAP R/3 MM 物料管理模块介绍