现在的位置: 首页 > 综合 > 正文

总结2 (强晟BC400 PPT)

2014年03月19日 ⁄ 综合 ⁄ 共 2862字 ⁄ 字号 评论关闭

在程序开始时,程序内容被读到应用服务器的内存区,程序中定义的数据对象也分配了相应的内存空间

 

move var1 to var2 等价于 var2 = var1

 

clear语句根据类型清楚数据对象,恢复成默认值

 

运算:

-          / :除法

-          DIV:整除忽略余数

-          MOD:取模

 

length = strlen(cityfrom )

 


 

条件分支:

1、  IF ELSE ENDIF

2、  IF ELSEIF ELSE ENDIF

3、  IF ELSEIF ENDIF

4、  CASE WHEN OTHER ENDCASE

 

循环:

1、  DO EXIT ENDDO.

2、  WHILE ENDWHILE

3、  SELECT

4、  LOOP

 

消息:

message语句必须指定三位数的消息号和消息类

SAP系统提供了一个消息测试的程序DEMO_MESSAGES

若消息使用了占位符,则需要在程序里用WITH关键字指定代替这些占位符的文字

 

ABAP调试器:在事务码输入栏中输入“/h”,然后回车

传统调试器最多可指定10个观察点,并用AND或者OR的关系连接起来

 


 

本地结构的定义:

使用TYPES来定义

TYPES: BEGIN OF STRUCTURE_TYPE_NAME,

       …,

       END OF STRUCTURE_TYPE_NAME.

DATA: STRUCTURE_NAME TYPE STRUCTURE_TYPE_NAME.

其中使用TYPE或者LIKE来指定组件

若结构不需要重用,可直接使用DATA语句来定义结构变量。

访问结构的组件:structure_name-component_name 连字符

使用move-corresponding语句把一个结构的内同同时拷贝到另一个结构中,只有源结构和目标结构中有相同名称的组件才会拷贝

  


 

内表是一个数据对象,可保存多个相同结构的数据

内表属性:

1、  行类型

2、  (唯一不/唯一)

3、  表类型 (标准表、排序表、哈希表)

哈希表只能以键访问,键唯一

标准表键不唯一

排序表数据记录在表内自动以升序进行排列

 

本地表类型定义通过TYPES语句来完成,并通过WITH NON-UNIQUE KEY定义主键

 

访问单条记录:(一般需要一个与内表行结构相同的工作区来处理单条记录)

APPEND:在最后一条记录追加,只用于标准表

INSERT:向内表插入一条记录,在标准表中跟APPEND效果一样,在哈希表中根据哈希算法插入到指定位置,在排序表中插入到键指定位置

READ:表指定行拷贝到结构中

MODIFY:使用结构的内容重写表指定行

DELETE:删除表指定行

COLLECT:结构中内容累加到内表具有相同键的行上,只有非键字段才执行累加,并且只有非键字段都是数值时候才能执行这个语句

 

处理结构集合:

1、  LOOP INTO WA ENDLOOP 系统字段sy-tabix指定了当前循环到内标的哪一行

2、  DELETE:删除满足条件的所有行

3、  INSERT::把内标中的多行拷贝到另一个内表中

4、  APPEND:把内标中的多行追加到另一个标准表中

 

使用索引读表:

1、  LOOP FROM TO

2、  READ INDEX

3、  LOOP WHERE

4、  READ WHERE TABLE KEY

 

内标排序:

1、  标准表和排序表使用SORT语句对指定字段进行排序,没指定则默认使用升序

2、  AS TEXT语句,按照语言的字典排序

3、  STABLE,排序字段有相同值的记录顺序在排序后保持不变

 

清除内表内容:

1、  REFRESH 清除整个内表内容,释放部分内表内存

2、  CLEAR 对于无内表头,跟REFRESH一样,对于有内表头的,则初始化表头

3、  FREE 清除整个内标内容,释放所有内存

表头HEADER LINEWITH HEADER LINE定义表的时候指定表头

 

表头的缺点:

1、  表头与内表名相同,影响阅读

2、  有表头的内表不允许使用复杂数据对象(不能把其他内表作为表的组件)

3、  有表头的内表不允许使用ABAP对象(面向对象的ABAP扩展)

4、  有表头的内表用itab[]表示整个表

 


 

数据库读访问:

1、  SELECT <files> FROM <table> INTO <target> [where <condition>]

2、  SELECT后面的块说明了需要读表的哪些字段

3、  FROM后面的块说明了需要读哪个数据源(表或视图)

4、  INTO后面的块说明了读出的字段放在哪个目标数据对象中

5、  WHERE后面的块说明了读数据的基本条件

 

读取单条记录:

1、  SELECT SINGLE从数据库表读取单条记录,CLIENT字段在这里可以不必指定,系统自动选定属于当前client记录

2、  SELECT语句中使用CLIENT SPECIFIED子句可以关闭自动客户端选定

3、  * 指定数据表的全部字段

4、  INTO指定记录要拷贝到目标变量

5、  找到合适记录,则系统变量sy-subrc = 0

6、  不用结构来保存数据,在into后面使用一个变量立标 into (field1,field2,..,fieldn)

7、  目标结构的数据结构与查询字段的顺序不一致,或者使用*这样的通配符来指定查询字段,需要corresponding fields of子句

 

读取多条记录:

1、  SELECT ENDSELECT

2、  WHERE条件可以指定需要选择的记录

3、  sy-subrc = 0 至少查询到一条记录

4、  sy-dbcnt 记录一共查询到多少条记录

5、  INTO TABLE 把查询结构一次性读到内表中

6、  成块传输,不需要ENDSELECT

7、  APPEND TABLE把新查询到得数据追加到已有数据的内表后面

 

CLIENT相关的表中国读取数据:

1、  有一个客户端字段作为主键,数据类型为CLNT,字段名为mandt

2、  不指定客户端,只有当前客户端的数据会被查询出来

3、  跨客户端的数据操作,FROM后面加CLIENT SPECIFIED子句,where条件里包含客户端了

 


 

性能提升

1、在不同的应用中,通常会经常使用某种查询,可以为这些查询所用的字段定义二级索引 ,从而加快查询速度。在查看ABAP 字典的透明表时,可以用索引按钮打开和维护索引。

2、 对于客户端相关的表,客户端字段默认传输给数据库,因此建立二级索引时应把客户端字段作为第一个 索引字段,可以有效提高查询速度。

3、索引建立并激活后,系统会用索引进行数据库优化。程序执行时会自动寻找跟查询条件相匹配的索引,从 而加快查询速度,编写程序时无需在程序的查询语句 中指定索

4、主索引根据表的主键自动建立,使用主键字段进行查询是最快的办法

 

SAP重用组件:

1、逻辑数据库:按表的层次结构组织起来的数据库

2、功能模块:SAP做好的一些函数库

3、BAPIsSAP定义好的业务逻辑开发接口

4、全局类方法:

 

数据库修改访问除了SELECT 外,开放SQL 还包含了UPDATE INSERTDELETE MODIFY 等多个语句

 

权限对象在权限类中定义,定义权限对象

抱歉!评论已关闭.