ABAP4 基础知识2 语法 内表 数据库表

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ABAP/4数据对象--结构示例
“直接声明 DATA : BEGIN OF STR_STUDENT,
NAME(40) TYPE C, BIRTH_DATE TYPE D, BIRTH_TIME TYPE T, HEIGHT TYPE P, WEIGHT TYPE I, END OF STR_STUDENT.
WHERE cond.
MODIFY语句可以根据指定的Index或Key来把表头或工作区的内容修改到<itab>中的相应记录。当然, 指定Index或Key的记录首先必须在<itab>中存在。
内部表的操作
4.COLLECT COLLECT [wa INTO] itab. Addition: ... SORTED BY f
DATA : T_MARA LIKE MARA OCCURS 0.
内部表的声明2
语法 DATA: <itab>
TYPE <itabkind> OF <linetype> [WITH {UNIQUE | NON-UNIQUE} KEY <keydef>]
[INITIAL SIZE <n>] [WITH HEADER LINE].
INSERT
LINES OF itab1 [FROM idx1] [TO idx2] INTO TABLE itab2.
INSERT语句用来把表头或工作区里的内容添加<itab>
的指定位置。
如果INDEX被指定,该语句将会将记录插入到指定置。
如果INDEX未指定,对标准表记录会被添加到末尾,对
排序表记录会自动按照Key进行排序。
内部表的操作
1.APPEND APPEND [wa TO|INITIAL LINE TO] itab. APPEND LINES OF itab1 [FROM idx1] [TO idx2] TO itab2. APPEND [wa TO] itab SORTED BY f.
APPEND语句用来把表头或工作区里的内添加到<itab> 的末尾。
值域 - - - - -
-231-1~231-1 根据长度和小数点位置而定
10-307~10308
ABAP/4基本语法--基本类型的转换规则
C onversion R ules for E lem entary Types
C onversion rules exist for all com binations of elem entary types (except for T to D and vice versa)
ABAP/4基本语法--基本数据声明
ABAP/4基本语法--预定义类型的值域
数据类型 C N D T X I P F
初始长度 1 1 8 6 1 4 8 8
有效长度 1-65535 1-65535
8 6 1-65535 4 1-16 8
初始值 ‘...’ ‘...’
‘00000000’ ‘000000’ X’…’ 0 0 0
结果: NAME
| SALES --------------Duck | 40 Tiger | 20
内部表的操作
5.READ READ TABLE itab READ TABLE itab
READ TABLE itab
READ TABLE itab
FROM wa [additions].
WITH TABLE KEY k1 = v1 ... kn = vn [ additions].
Native SQL是ABAP/4语言中提供的一种直接执行R/3底层数据库的机制,一般情况下不建议使用
Open SQL
• 读取数据 SELECT
• 变更数据 INSERT UPDATE/MODIFY DELETE
SELECT
SELECT <result> INTO <target> FROM <source> [WHERE <condition>] [GROUP BY <fields>] [HAVING <cond>] [ORDER BY <fields>].
SELECT <t1>~<field lists>
<t2>~<field lists>
INTO ...
FROM <t1> INNER JOIN <t2>
ON
<t1>~<pk1> = <t2>~<pk1>
...
WHERE ...
使用INNER JOIN,只有在<t1>和<t2>中都存在的 记录才会被取出来。
例:
TYPES: BEGIN OF COMPANY, NAME(20) TYPE C, SALES TYPE I,
END OF COMPANY.
DATA: COMP TYPE COMPANY, COMPTAB TYPE HASHED TABLE OF COMPANY WITH UNIQUE KEY NAME.
END OF struct.
DATA: itab
TYPE TALBE OF struct WITH HEADER LINE,
wa_itab TYPE struct.
数据库访问
ABAP/4访问数据库有两种方式: • Open SQL
Open SQL是SAP ABAP/4语言中一系列访问数据库的语法的集合 • Native SQL
COMP-NAME = 'Duck'. COMP-SALES = 10. COLLECT COMP INTO COMPTAB.
COMP-NAME = 'Tiger'. COMP-SALES = 20. COLLECT COMP INTO COMPTAB.
COMP-NAME = 'Duck'. COMP-SALES = 30. COLLECT COMP INTO COMPTAB.
内部表的操作
2. INSERT
INSERT
[wa INTO|INITIAL LINE INTO] itab
[INDEX idx].
INSERT
[wa INTO|INITIAL LINE INTO] TABLE itab.
INSERT
LINES OF itab1 [FROM idx1] [TO idx2] INTO itab2 [INDEX idx3].
ABAP的句法规则

ABAP程序是由若干单独的语句组成的

每个语句用句点结束

语句的第一个单词一般为关键字

语句中单词之间至少要用一个空格隔开

语句可以缩进

一句语句可由多行组成

在一行中可以有多个语句
ABAP/4基本语法
• 数据声明 • 控制和计算 • 数据库访问
ABAP/4基本语法--数据
• 基本数据声样 “和标准表MARA中字段MATNR一样
ABAP/4数据对象--结构
结构声明同样有两种方法: DATA : BEGIN OF <结构名>,
<项目1>, <项目2>, …… <项目n>, END OF <结构名>.
DATA : <结构名> TYPE|LIKE <结构|表>.
WITH KEY k1 = v1 ... kn = vn [BINARY SEARCH] [ additions].
INDEX i [additions].
内部表的操作
6.LOOP LOOP AT itab. LOOP AT itab INTO wa. LOOP AT itab ASSIGNING <fs>.
W_TIME
TYPE T VALUE ‘123212’, ”时间
W_NUMBER
TYPE N,
“1位数字变量
W_MULNUM(10) TYPE N,
“10位数字变量
W_QUAN
TYPE P,
“缺省有3位小数的变量
W_CURR
TYPE P DECIMAL 2. “固定2位小数的变量
DATA : W_CHAR_REF LIKE W_CHAR, W_MATNR LIKE MARA-MATNR.
“特殊的用法,在自己的结构中包含别的 结构 DATA : BEGIN OF STR_STUDENG2.
INCLUDE STR_STUDENT. DATA : CLASS(2) TYPE N,
DIRECTOR(40) TYPE C. DATA : END OF STR_STUDENT2.
“LIKE或TYPE
INSERT INSERT INTO <target> <lines>.
UPDATE UPDATE <target> <lines>.
MODIFY MODIFY <target> <lines>.
DELETE DELETE [FROM] <target> <lines>.
INNER JOIN
内部表的操作
3.MODIFY
MODIFY itab
[FROM wa]
[INDEX idx]
[TRANSPORTING f1 ... fn]. MODIFY TABLE itab [FROM wa]
MODIFY itab
[TRANSPORTING f1 ... fn]. [FROM wa]
TRANSPORTING f1 ... fn
内部表的声明1
•内部表的声明和结构的声明很相似,差别在于声明中有表明内部表身份的关键字OCCURS 例: DATA : BEGIN OFT_STUDENT OCCURS 0, NAME(40) TYPE C, BIRTH_DATE TYPE D, BIRTH_TIME TYPE T, HEIGHT TYPE P, WEIGHT TYPE I, END OF T_STUDENT.
优化原则?尽量减少检索出的记录数使用where子句过滤掉不需要的记录?尽量减少数据在applicationserver和databaseserver间的传输列明所需要的字段不要使用select这种写法?尽量减少查询语句的数量多使用关联查询避免使用嵌套查询?尽量优化检索的速度利用数据表的索引?尽量降低databaseserver的负荷使用内表做缓存2008abeamconsultingltd
内部表是ABAP/4中最核心的处理对象 内部表是用来处理(增加、查询、修改、删除)一系列具有相同结构的数据的 内部表涵盖了在其它编程语言中数组的功能 内部表仅在ABAP/4程序运行时在内存空间里存在 内部表是自动化的对象,它自动完成相关的内存管理
ABAP/4数据对象--内表的分类
• 内表可以分為序表和无序表(hashtable),有序表又分为标准表和排序表。这三种表在使用中各有区别, 一般我们未特别指明的情况下都是用的标准表。 • 标准表是以Index来进行排列的,我们可以使用Index和Key来访问它。排序表是以Key来进行排列的,同 样的,我们也可以使用Index和Key来进行访问。 • 无序表是(hashtable)不按照任何规则进行排列的,对它的访问只能按照Key来进行。
Left/Right OUTER JOIN
SELECT
INTO FROM
WHERE
<t1>~<field lists>
<t2>~<field lists>
...
<t1> {LEFT | RIGHT} OUTER JOIN <t2>
ON
<t1>~<pk1> = <t2>~<pk1> ...
...
使用LEFT OUTER JOIN,以<t1>为主表关联<t2>,如果 <t1>有的数据而<t2>不存在,则<t2>的字段以NULL值填 充。RIGHT OUTER JOIN相同,不过是以<t2>为主表来关 联<t1>。
TYPE C,
“1位长度的字符变量
W_MULCHAR(20) TYPE C,
“20位长度的字符变量
W_INTERGER TYPE I VALUE 10, “整型变量,并赋上了初值10
W_FLOAT
TYPE F VALIE 1.2E-10,
“浮点数
W_DATE
TYPE D VALUE ‘20030312’, “日期
例:
TYPES: BEGIN OF struct,
carrid
LIKE spfli-carrid,
connid
LIKE spfli-connid,
cityfrom
LIKE spfli-cityfrom,
fldate
LIKE sflight-fldate,
seatsmax LIKE sflight-seatsmax,
DATA : STR_STUDENT_REF LIKE STR_STUDENT,
STR_MARA LIKE MARA.
ABAP/4数据对象--内部表
• 概念 内表是一种临时的数据表,它并不建立在Database Server上,而是建立在本地内存空间中,所以它不占 用系统资源,而且存取速度快。正因为这些特性,使得内表在ABAP编程中显得相当的重要。 • 特征
S ource field
Type
L e n g th
V alue
Target field
Type
L e n g th
V alue
C
1
A
C
4
A____
C
4
ABCD
C
2
AB
C
7
-47110_
P
4
47110-
P
3
12345-
C
7
_12345-
R
SAP AG
ABAP/4基本语法--简单的变量定义示例
DATA : W_CHAR
相关文档
最新文档