ABAP基础 abap开发

了解ABAP

SAP的三层体系结构

ABAP语法概述

ABAP语言的基本元素

ABAP的语法格式

结构类型和结构体

内表

数据库操作

ABAP:(Advanced business applicationprogram),是一种高级企业应用编程语言,它支持封装性和继承性,封装性是面向对象的基础,而继承性是建立在封装性基础上的重要特性。它适合生成报表,支持对数据库的操作,如:SQLServer,Oracle,DB2等主流数据库系统。

SAP三层体系结构:

表现层(PresentationLayer):这是SAP用户和R/3系统交流 的接口,用户在这一层对SAP系统进行操作。这层将用户的命令或者操作传送给R/3系统,然后系统进行相应的处理后把数据返还给用户。

应用层(ApplicationLayer):这层包括一个或者多个应用服务器和一个消息服务器。每一个应用服务器包括一系列服务以便运行应用程序。所有的服务分置在这些应用服务器之中,其实用户需要的只是其中的一个应用服务器,多个服务器之间传递信息以决定用户到底需要的是哪个服务器的服务。

数据库层(Database Layer):这里是SAP系统的核心,存放了所有SAP系统的数据。

语法概述:

ABAP基本语法特点:

由各自独立的语句构成;

每个语句的第一个单词必须是ABAP关键字;

单词之间至少要用一个空格分隔;

每个语句结束必须要用句号;

支持分块缩进,便于阅读;

一个语句可以跨多行,只要不遇到句号,就认为是一个延续的语句;

可以把多个语句放在一行;

ABAP不区分大小写,关键字和用户操作数都一样,为了便于阅读,一般把关键字大写,而操作数小写;

由于编程的时候随时切换大小写比较麻烦,可以在ABAP编辑器中用“规范化打印机”按钮来自动转换;

如果连续多行的第一关键字相同,可以使用链语句,链语句的方式减少输入。

注释:

注释行由第一列的星号(*)开头,并且必须写在第一列,前面不能有空格;

编译器忽略注释行,不会执行;

在行末的注释用双引号(”)作为前导。

数据类型:

D:日期类型,格式为YYYYMMDD,长度为8;

T:时间类型,格式为HHMMSS,长度为6;

I:整数类型,长度为4;

F:浮点类型,长度为8;

STRING:变长字符串类型;

XSTRING:变长字节序列类型;

C:字符串类型,定义变量时指定字符个数;

N:数字字符串类型,定义变量时指定数值字符个数;

X:字节序列类型,定义变量时指定字节数;

P:组合数值类型,定义变量时指定长度和小数点后位数。

ABAP运算:

数值运算(在ABAP中数学表达式可以任意多层嵌套)

--算术运算

--数学函数

--时间日期运算

逻辑表达式

--通用逻辑运算符

EQ(=) NE(<>) LT(<)LE(<=) GT(>)GE(>=)

--IS操作符

IS INITIAL 检查字段是否为初始值

IS ASSIGNED 检查字段是否被分配

--BETWEEN操作符

--组合逻辑表达式

AND 与 OR或 NOT 非

ABAP程序的关键字:关键字是语句的第一个词,它决定整个语句的意义,有四种不同类型的关键字。

1.说明性关键字

TYPES,DATA,TABLES,这些关键字说明定义数据类型或者说明程序可以访问的数据对象。

2.事件关键字

ATSELECTION SCREEN;

START-OF-SELECTION;

ATUSER-COMMAND;

这些关键字在ABAP中定义处理块,处理快是当特定事件发生时进行处理的语句组。

3.控制关键字

IF,WHILE,CASE

4.操作关键字

WRITE,MOVE,ADD

用于处理数据

语法格式:

定义数据对象

-DATAname TYPE type-name

例:DATAnumber TYPE I.

定义了一个对象number,其类型为I

DATA num TYPE I value 18.

定义了一个对象num,其类型为I,初始值为18

-TYPES:address TYPE C.

注:TYPES语句用来创建用户定义的基本数据类型和结构化的数据类型,通过TYPE定义的类型不能直接诶使用,需要通过DATA进行定义其对应的变量后才可使用。

如:DATA:address1 TYPE address.

语句链:如果连续多行的第一个关键字相同,可以使用链语句,链语句的方式减少输入

WRITEtext1.

WRITEtext2.

WIRTEtext3.

可以写成:WRITE:text1,text2,text3.

分支结构(IF,CASE)

使用IF的条件分支

IF <condition1>.

<statement block>

ELSEIF <condition2>.

<statement block>

ELSEIF <condition3>.

<statement block>

......

ELSE.

<statement block>

ENDIF.

例子:DATAflag TYPE c VALUE 'a'.

IFflag = 'a'.

WRITE /'true'.

ELSE.

WRITE /'error'.

ENDIF.

产生输出为:true

使用CASE的条件分支

基本语法:

CASE <f>.

WHEN <F1>.

<statement block>

WHEN <F2>.

<statement block>

WHEN <F3>.

<statement block>

WHEN ...

......

WHEN OTHERS.

<statement block>

ENDCASE.

例子:DATA:TEXT1 VALUE 'X',

TEXT2 VALUE 'Y',

TEXT3 VALUE 'Z',

STRING VALUE 'A'.

CASESTRING.

WHEN TEXT1.

WRITE:/'String is',TEXT1.

WHEN TEXT2.

WRITE:/'String is',TEXT2.

WHEN TEXT3.

WRITE:/'String is',TEXT3.

WHEN OTHERS.

WRITE:/'String is not',TEXT1,TEXT2,TEXT3.

ENDCASE.

产生输出:String is not X Y Z

这里,执行WHEN OTHERS后面的语句块,因为STRING的内容“A”不等于“X”、“Y”或“Z”。

循环结构(DO,WHILE)

使用DO的无条件循环:

DO

[<n> TIMES]

[VARYING <f> FROM<F1> NEXT<F2>].

<statement block>

ENDDO.

TIMES 循环次数;

VARYING 选项在每次循环中给变量 <f> 重新赋值;

<n> 可以是文字或变量,如果<n> 是0或负数,系统不执行该循环;

使用DO语句时要避免死循环,如果不使用TIMES选项,则在语句块中至少应包含一个EXIT、STOP或REJECT语句,以便系统能够推出循环。

例子:DO.

WRITE SY-INDEX.

IF SY-INDEX = 3.

EXIT.

ENDIF.

ENDDO.

产生输出:12 3

这里,处理3次循环,然后在EXIT语句后推出循环;

SY-INDEX代表循环次数。

使用WHILE的条件循环:

语法:WHILE<condition> [VARY<f> FROM<F1> NEXT<F2>].

<statement block>

ENDWHILE.

循环终止(CONTINUE,CHECK,EXIT)

--无条件终止循环:CONTINUE

DO 4 TIMES.

IF SY-INDEX = 2.

CONTINUE.

ENDIF.

WRITE SY-INDEX.

ENDDO.

输出结果:13 4

--有条件终止循环:CHECK <condition>

DO 4 TIMES.

CHECK SY-INDEX BETWEEN 2 and 3.

WRITE SY-INDEX.

ENDDO.

输出结果:2 3

注:condition的条件不为真时,跳出此次循环,继续下条循环

--完全终止循环:EXIT

DO 4 TIMES.

IF SY-INDEX = 3.

EXIT.

ENDIF.

WRITE SY-INDEX.

ENDDO.

输出结果:1 2

结构类型和结构体:

--结构类型由多个数据元素作为组件构成

--参照结构类型生成的数据对象称为结构体

--定义方式

TYPES | DATA: BEGIN OF structure,

k1 [TYPE type | LIKE dobj] ...,

k2 [TYPE type | LIKE dobj] ...,

......

kn [TYPE type | LIKE dobj] ...,

END OF structure.

或者TYPES| DATA structure TYPE str_type | LIKE str_dob.

TYPES| DATA structure TYPE dbtab.

--组件通过取组件运算符“-”进行访问,如:structure-comp

例子:TYPES:BEGIN OF address,

nameTYPEString,

street(30)TYPE C,

cityTYPEString,

END OF address.

DATAmy_add TYPE address.

my_add-name= 'yang qingshan'.

my_add-street= 'huangguoshu'.

my_add-city= 'anshun'.

write:my_add-name, my_add-street, my_add-city.

内表:内表是一个数据对象,在运行时内表可保存多个相同结构的数据,行数是动态的,系统可实时增加内表的大小。

内表的属性:

--几种数据表的访问:分为索引访问,键访问

--三种表的类型:标准表,排序表,哈希表

内表的定义:

TYPES | DATA itab {TYPE | LIKE}tabkind OF {linetype |lineobj}

[WITH key]

[INITIAL SIZE n].

--tabkind 内表种类

--linetype行类型

--key 表关键字

--n 初始内存大小

内表类型(一):

--标准表 STANDARD TABLE

具有逻辑索引

寻址操作通过关键字或者索引

--排序表 SORTED TABLE

具有逻辑索引

寻址操作通过关键字或者索引

按表关键字升序后存储

--哈希表 HASHED TABLE

没有逻辑索引

寻址操作只通过关键字

内表类型(二):

行类型:

基本类型结构体 内表

表关键字:

--行结构为结构体

WITH [UNIQUE | NON-UNIQUE] KEYcomp1 ... compn

--行结构为基本类型

WITH [UNIQUE|NON-UNIQUE] KEY TABLE LINE

--不指定关键字

WITH [UNIQUE | NON-UNIQUE]DEFAULT KEY

初始内存大小:

INITIALSIZE n

例子:创建一个内表

TYPES: BEGIN OF address,

street(20)TYPE C,

city(20)TYPE C,

ENDOF address.

DATA: BEGIN OF company,

name(20)TYPE C,

addressTYPEaddress,

ENDOF company.

DATA itab_company LIKE HASHED TABLE OF company WITH UNIQUE KEYname.

内表操作:

操作内表行:

--插入行 INSERT 语句

插入单行

INSERT line INTO itab INDEX index.

插入多行

INSERT LINES OF itab1[FROMn1][TO n2]

INTO [TABLE ]itab2[INDEX index]

--附加行 APPEND 语句

附加单行

APPEND line TO itab.

附加多行

APPEND LINES OF itab1 [FROM n1][TO n2] TO itab.

--读取行 READ 语句

利用索引读取

READ itab INTO wa INDEX index.

利用关键字读取

READ TABLE itab FROM key INTOwa.

--修改行 MODIFY 语句

根据索引修改

MODIFY itab [FROM wa][INDEX index]

[TRANSPORTING f1 f2 ...].

根据关键字修改

MODIFY TABLE itab FROM wa

[TRANSPORTING f1 f2 ...].

修改多行

MODIFY itab FROM wa TRANSPORTING f1 f2 ...

WHERE cond.

--删除行 DELETE 语句

通过索引删除

DELETE itab INDEX index.

通过关键字删除

DELETE TABLE itab FROMwa.

DELETE TABLE itab WITH TABLE KEY k1 = f1 ... ki = fi.

删除多行

DELETE itab [FROM n1][TO n2][WHERE<condition>]

--循环处理结果集合 LOOP 语句

Loop语句一条条的读出的数据行,写入 INTO 字指定的结构中,结构内容可用于输出或写回内表。

LOOP AT itab [INTO wa][FROM n1] [TOn2]

[WHERE<condition>].

<statement block>

ENDLOOP

表工作区:

创建表工作区:

--Tables t_name.

DATA:begin of t_name,

F type c,

Endt_name.

--表工作区就是其他语言的结构,像自定义的一个类型一样,但一旦创建一个内表之后,工作区就成了外界跟内表的交流口,每条记录的进入和取出都得通过它,并且清除它们的时候分开来清除。

数据库操作:

Open SQL

--完全集成到ABAP中的标准SQL子集中;

--只包括数据操纵(DML)

SELECT, INSERT, UPDATE, MODIFY, DELETE

--不包括数据定义(DDL)和数据控制(DCL)

提取数据 SELECT 语句

--选择单行数据:

SELECT SINGLE <result> INTO<target> FROM<source> ...

--选择多行数据:循环选择

SELECT [DISTINCT ]<result> ...

<statement block>

ENDSELECT

--选择多行数据:选择至内表

SELECT ... INTO TABLE itab.

插入数据 INSERT 语句

--插入单行数据

INSERT INTO dbtab VALUES wa.

INSERT INTO dbtab FROM wa.

--插入多行数据

INSERT dbtab FROM TABLE itab.

更新数据 UPDATE 语句

--更新单行数据

UPDATE dbtab SET f1 = g1 ... fi = gi WHERE<fix_key>.

* fix_key 全部表关键字段的值

或 UPDATE dbtab FROM wa.

--更新多行数据

UPDATE datab SET f1 = g1 ... fi = gi [WHERE<condition>]

或 UPDATE dbtab FROM TABLE itab.

ABAP基础 abap开发

添加或更新数据 MODIFY 语句

--添加或更新单行数据

MODIFY dbtab FROM wa.

--添加或更新多行数据

MODIFY dbtab FROM itab.

Native SQL

--包含 DDL, DML, DCL

--依赖特定数据库类型

--不具备好的可移植性

EXEC SQL [PERFORMING<form>].

<Native SQL statement> [;]

ENDEXEC.

  

爱华网本文地址 » http://www.aihuau.com/a/25101015/243884.html

更多阅读

常用的电脑操作系统有哪些 常用操作系统有哪些

所谓的操作系统就是管理电脑硬件与软件程序,所有的软件都是基于操作系统程序的基础上去开发的。其实操作系统种类是很多的,用工业用的,商业用的,个人用的,涉及的范围很广。这里我只介绍我们平时电脑常见的操作系统都有哪些。window

小肥羊核心经营能力SWOT分析 政治教师核心能力提升

民以食为天,小肥羊致力于提倡草原健康的中华饮食文化,为全人类提供健康的食品,以人类健康为基础来开发新产品,来经营小肥羊这个品牌。同时,以提倡中国特色的饮食文化己任,努力打造中国特色的民族品牌,加强民族品牌的发展,在餐饮行业上能有

ageLOC R2 2014年1月中国上市 2014中国上市公司数量

ageLOC R2 2014年1月中国上市什么是R2?Recharge (补充能量)+ Renew(重返青春) = (R+R=R2)R2是在第一代热销的基因个人保养品Vatility基础上开发的第二代产品,安全有效!它可以提高脑力、体力和性活力。让大脑、心脏、肝脏、肌肉和性功能回到

引用 电脑播音软件 电脑播音软件

引用 U5教程汇总2009年7月4日引用 电脑播音软件--“听网”2009-07-02 00:28:42|分类: 默认分类 字号引用杏花雨 的 电脑播音软件--“听网”[原创]推荐给中老年网友的电脑播音软件--“听网”“听网”是由中国科大讯飞信息科技股份有限

浅析聚氨酯双组份抗污标线涂料 聚氨酯涂料

聚氨酯低溶剂高固体抗污染标线涂料, 是在无溶剂双组份冷塑性标线涂料的基础上,开发出的新一代改性聚氨酯低溶剂高固体抗污标线涂料。同以往双组份产品的区别在于,在改性聚氨酯树脂中添加超细的填充物,使涂料表面密实度和光洁度大大提

声明:《ABAP基础 abap开发》为网友凉秋瑾言分享!如侵犯到您的合法权益请联系我们删除