您好,欢迎访问三七文档
ABAP/4程序开发胜利油田胜利软件有限责任公司薛现军XAVERYHSUEHXaveryHsueh2ABAP/4程序开发ABAP/4介绍ABAP/4程序开发(基础)ABAP/4程序开发(提高)补充XaveryHsueh3ABAP/4介绍XaveryHsueh4什么是ABAP/4ABAP/4是英文AdvancedBusinessApplicationProgramming的缩写,是SAPR/3商用系统的应用程序开发工具XaveryHsueh5为什么学习ABAP/4?ABAP/4是所有SAPR/3应用的基础,也是进行SAPR/3二次开发的最主要的工具,是我们对SAPR/3系统进行应用分析、二次开发的主要工具、必由之路XaveryHsueh6ABAP/4的开发环境XaveryHsueh7ABAP/4编辑器XaveryHsueh8属性设置XaveryHsueh9创建对象目录条目XaveryHsueh10ABAP/4EDITORXaveryHsueh11运行结果(按F8运行)XaveryHsueh12ABAP/4程序的命名规则两位到八位的字节长度必须以Y或Z开头不可以包含特殊字符命名在整个SAP系统中必须唯一XaveryHsueh13SAP数据表简介SAP是基于数据库的系统,所以,要进行SAP的开发就必须先对其数据库结构有一定的了解。通过SAP菜单—工具—ABAP工作台—开发—SE11-ABAP字典进入SAP的数据表设置工具,另外也可以通过命令行SE11进行。XaveryHsueh14ABAP字典的初始界面XaveryHsueh15表T001的结构XaveryHsueh16表T001的内容XaveryHsueh17字段(Fields)字段是记录里面的列,例如表T001记录的是公司代码,其中MANDT这个字段就用来记录公司代码里面的集团。字段名在同一张表中必须是唯一的。XaveryHsueh18数据属性在SAP数据表中,由数据类型、长度、小数位三个属性决定了数据以怎么样的方式进行存储。XaveryHsueh19表检查表检查限定了字段的取值只能存在于用于检查的表中。例如上例中MANDT的表检查为T000(集团),则在输入时,只能输入在T000中已存在的集团,假设T000中不存在500这个集团,那就无法把500输入到MANDT中。XaveryHsueh20字段类型在ABAP中,常把一些常用的数据定义(包括属性、表检查、说明等)作成一个字段类型,这样在定义相同类型字段时,就可以使用该数据字义,而不必一个个属性的进行设置,而且当字段类型改变时,也将同时作用到整个SAP系统中而不必每个表的进行修改。XaveryHsueh21字段类型例如员工的编号为十位的字符长度,并且必须为EMPT表中存在的员工,那就可以定义一个员工编号的字段类型,为十位的字符串,表检查为EMPT,短文本为“员工编号”,这样当需要定义员工编号类型的字段时,只要简单的把字段类型定义为员工编号。当以后员工编号扩展为二十位时,也只需要把员工编号的字段类型中的字符长度设为二十。XaveryHsueh22ABAP/4程序开发(基础)XaveryHsueh23代码的书写一条完整的代码以.分隔。多条代码可以写在同一行。一条代码可以分为多行编写。以“对其后的代码进行注释以*对整行的代码进行注释XaveryHsueh24ABAP/4程序组成程序名表声明定义变量程序体XaveryHsueh25一条简单的程序XaveryHsueh26运行的结果XaveryHsueh27程序名程序名在开始编写程序时系统自动生成一般情况下不需要对系统生成的程序名进行修改。附带参数:line-sizen每一行的长度。line-countn(m)每页n行,留空m行。nostandardpageheading不显示标题。XaveryHsueh28表声明在ABAP/4程序里,如果需要用到某张数据表,则必须在程序开头进行声明。表声明的格式为:tables:表名[,表名].表名为你要用到的表的名字。可以同时对多张表进行声明,之间用逗号进行分隔。XaveryHsueh29定义变量在ABAP/4程序里,有很多种变量的定义方式,在这里只介绍最简单的一种,其它的会在后面进行介绍。XaveryHsueh30定义变量的格式datav1[(l)][typet][decimalsd][value‘xxx'].v1是变量名。(l)是变量的长度。t是数据类型。d是小数位。‘xxx’是缺省值。datanum(10)typepdecimals3value'1.12'.以上定义了一个10位长度3位小数缺省值为1.12数字变量。XaveryHsueh31字符类型变量数据类型描述缺省长度最大长度可用字符缺省值c字符165535任意字符空白n数字文本1655350-90d日期8(固定)-0-900000000t时间6(固定)-0-9000000x十六进制数1655350–9和A-FXaveryHsueh32数字类型数据类型描述缺省长度最大长度最大小数位缺省值i整数4(固定)-00p十进制数816140f浮点数8815*0.1XaveryHsueh33主要语句赋值语句条件语句循环语句数据库操作语句输出语句XaveryHsueh34付值语句为变量进行赋值。把一个变量的内容存入另一个变量。进行计算并把结果存入变量。XaveryHsueh35为变量进行付值为变量进行付值的格式为变量=要付的值.例如total=10.如果要付值的对象是字符,则需要用‘括起来。例如mess=‘thisisatest!’.如果字符串中包括‘号,用’’进行付值。例如mess=‘thisisa‘’test’’!’.以上语句将会输出thisa‘test’!XaveryHsueh36把一个变量的内容存入另一个变量。把一个变量的内容存入另一个变量的格式为变量A=变量B.例如b=5,则语句a=b.将使a获得b的值,a=5.XaveryHsueh37进行计算并把结果存入变量进行计算并把结果存入变量的格式为变量A=变量B操作符变量C例如b=10,c=5则语句a=b+c.将把b和c相加,并把结果付与a,a=15。XaveryHsueh38常用算术操作+加法运算-减法运算*乘法运算/除法运算**取幂运算DIV整除运算MOD取模运算XaveryHsueh39条件语句IF语句CASE语句XaveryHsueh40IF语句IF语句格式为if(条件比较).[执行1]else.[执行2]endif.例如ifi=2.write'i等于2'.else.write'i不等于2'.endif.XaveryHsueh41常用比较操作v1=v2相等v1v2不相等v1v2大于v1v2小于v1=v2大于等于v1=v2小于等于v1betweenv2andv3在…之间notv1betweenv2andv3不在…之间XaveryHsueh42CASE语句CASE语句的格式为casevwhenv1.[执行1]whenv2.[执行2]whenothers.[执行3]endcase.XaveryHsueh43CASE语句例如casei.when1.write'i=1'.when2.write'i=2'.whenothers.write'i1andi2'.endcase.以上语句执行如果I=1时,显示I=1;如查I=2时,显示I=2;如果都不相等时,显示I1andI2。XaveryHsueh44循环语句Do语句While语句XaveryHsueh45DO语句DO语句用于对一段代码进行多次的执行,这里的DO语句不同于其它语言中的DO,而类似于其它语言中的FOR语句。DO语句的格式为do[n]times.[执行代码]enddo.[n]为执行的次数,[执行代码]为要重复执行的代码。XaveryHsueh46DO语句以下的代码的执行结果是在输出屏幕上显示三行thisisatest!do3times.write/'thisisatest!'.enddo.XaveryHsueh47WHILE语句WHILE语句是在条件成立的情况下重复执行一段代码。WHILE语句的格式是while[条件].[执行语句]endwhile.以上代码的意思是重复的执行[执行语句],直到条件不成立为止。XaveryHsueh48WHILE语句以下代码的结果是在I小于6时,不断的输出I的值,每执行一次,I就加1。whilei6.write:/'i=',i.i=i+1.endwhile.XaveryHsueh49循环语句的一个例子XaveryHsueh50循环语句的一个例子XaveryHsueh51数据库操作语句数据库操作语句实现从数据库中取数据的操作。主要的取数的操作有取单行记录取记录集XaveryHsueh52从数据库中取数据集取出数据库中附合条件的所有数据。语句的格式如下select*from数据表[where条件].[操作语句]endselect.以上语句将会从数据库中把符合条件的数据一条条的取出来,直接取完全部数据,则退出循环。XaveryHsueh53从数据库中取数据集以下的代码逐条取出t000中的记录,并显示mandt和mtext这两个字段。select*fromt000.write:/t000-mandt,t000-mtext.endselect.以下的代码则只取出mandt小于200的数据。select*fromt000wheremandt200.write:/t000-mandt,t000-mtext.endselect.XaveryHsueh54从数据库中取数据集XaveryHsueh55从数据库中取数据集XaveryHsueh56从数据库中取单条记录取出单行记录的某个字段取出单行的记录XaveryHsueh57取出单行记录取出单行记录的语句为selectsingle*from数据表[where条件]以上的语句执行了从指定的数据表中依照给出的条件取出一行记录。XaveryHsueh58取出单行记录的例子XaveryHsueh59取出单行记录的例子XaveryHsueh60取出单行记录的某个字段取出单行记录的某个字段的语句为selectsingle字段from数据表into变量[where条件]以上的语句从指定的数据表中依照给出的条件取出一行记录,并把指定的字段的值付给指定的变量。XaveryHsueh61取出单行记录的某个字段的例子XaveryHsueh62取出单行记录的某个字段的例子XaveryHsueh63介绍常用的查询不分条件的查找数据使用以下语句select*from数据表.例子:select*fromt000.该例子的作用是把t000表中所有的数据都检索出来。XaveryHsueh64介绍常用的查询根据给定条件进行查询使用以下语句。select*from数据表where条件.例子:select*fromt000wheremandt200.以上例子的作用是从t000表中把mandt大于200的记录检索出来。XaveryHsueh65介绍常用的查询多条件查询使用以下语句。select*fromwhere条件[and条件][or条件].例子:select*fromt000wheremandt200ormandt=100.以上例子的作用是从t000表中把mandt大于200或mandt等于100的记录检索出来。XaveryHsueh66输出语句WRITE语句ULINE语句SKIP语句XaveryHsueh67WRITE语句WRITE语句的作用是在屏幕上显示数据。WRITE的格式为:write:[/][定位][数据1][,[定位][数据2]]……[/]为插入一行空行,注意单独write一个[/]和在其它数据之前加[/]的效果是不一样的
本文标题:ABAP入门培训
链接地址:https://www.777doc.com/doc-3877335 .html