1、ABAPABAP课程编码:由商学院写杨晓文/产品管理部2015年02月xx日第1页,共39页。课程编码:PFO27课程名称课程目标 了解ABAP开发语言 掌握ABAP语法及内表应用 应用ABAP语法和内表进行程序开发第2页,共39页。课程编码:PFO27课程名称纲 要ONTENTS1ABAP开发平台简介2ABAP开发语言基础3ABAP内表使用方法 4SAP数据库使用 课程目录第3页,共39页。课程编码:PFO27课程名称一、ABAP开发平台简介ABAP/4是英文Advanced Business Application Programming的缩写,是SAP R/3商用系统的应用程序开发工具,
2、也是一套完整的client/server开发环境,技术平台.1.1 什么是ABAP/4第4页,共39页。课程编码:PFO27课程名称一、ABAP开发平台简介1.2 ABAP/4特点第5页,共39页。课程编码:PFO27课程名称一、ABAP开发平台简介和SAP紧密结合,SAP进行二次开发的必备工具2.ABAP语言语法简单,但是开发人员要求对企业管理流程熟悉1.2 ABAP/4特点第6页,共39页。课程编码:PFO27课程名称纲 要ONTENTS1ABAP开发平台简介2ABAP开发语言基础3ABAP内表使用方法4SAP数据库使用 课程目录第7页,共39页。课程编码:PFO27课程名称二、ABAP语
3、言开发基础2.1 基本数据类型数据类型 默 认大小有效 大小 初始值 说明C 11 65535 SPACE 文本,字符D 88 00000000 日期F 88 0 浮点数I 44 0 整型N 11-6553500.0 数字文本P 81-16 0 压缩数T 66000000 时间X 11 65535 X00 十六进制数第8页,共39页。课程编码:PFO27课程名称二、ABAP语言开发基础2.2 数据定义2.2.1 TYPES语句(创建用户定义的基本数据类型和结构化数据类型)语法-TYPES .例子:TYPES:SURNAME(20)TYPE C,PHONE(20)TYPE N,DATE LIKE
4、 SY-DATUM.语法:TYPES:BEGIN OF,.END OF.例子:TYPES:BEGIN OF ADDRESS,NAME TYPE SURNAME,CODE(10)TYPE N,TOWN(20)TYPE C,STR(30)TYPE C,END OF ADDRESS.第9页,共39页。课程编码:PFO27课程名称二、ABAP语言开发基础2.2 数据定义2.2.2 DATA语句(定义局部或全局变量;定义一个结构化的数据对象;定义一个内表)语法-DATA:VARLIKE DICTIONARY TYPE DATA:VARTYPE C,P,I,STRING等等 例子:DATA:S1 TYPE
5、 I,t_pspnr like prps-pspnr.DATA:GT_TABLE TYPE TABLE OF PRPS,GW_TABLE TYPE PRPS.第10页,共39页。课程编码:PFO27课程名称二、ABAP语言开发基础2.2 数据定义2.2.3 系统定义这是由系统所定义的专有名词,如 SPACE 空白字符串 SY-SUBRC 系统执行传回值,0 表示成功 SY-UNAME logon 账号 SY-DATUM 系统日期 SY-UZEIT 系统时间 SY-TCODE 目前的transaction code SY-COLNO 用于当前列 SY-LINNO 用于当前行 SY-LISEL 选
6、定行内容 SY-LISEL 主要从系统字段中检索下列信息:列表的索引、输出窗口中列表位置和光标的位置 第11页,共39页。课程编码:PFO27课程名称二、ABAP语言开发基础2.3 基本数据操作2.3.1 数据赋值 MOVE语句(作用和“=”一样)move data1 to data2.data2=data1.注意:源变量和目标变量的类型要一样或者可以进行类型转换,要是两者不兼容也不能类型转换,则上述语句不能成功执行。ClEAR语句:把变量恢复到初始状态(空值)。第12页,共39页。课程编码:PFO27课程名称二、ABAP语言开发基础2.3 基本数据操作2.3.2 数值运算 运算用数学表达式的
7、语句 用关键字的语句 加法 =+.ADD TO.减 法 =-.SUBTRACT FROM.乘 法 =*.MULTIPLY BY.除 法 =/.DIVIDE BY.整 除 =DIV.-除 法余数 =MOD.-求 幂 =*.-第13页,共39页。课程编码:PFO27课程名称二、ABAP语言开发基础2.3 基本数据操作2.3.3 逻辑表达式 处理日期和时间字段,日期和时间字段数据类型不是数值型。但是可以采用类似于数值型字段的处理方法,处理日期和时间字段。例:DATA:ULTIMO TYPE D.ULTIMO =SY-DATUM.ULTIMO+6(2)=01.ULTIMO =ULTIMO-1.第14页
8、,共39页。课程编码:PFO27课程名称二、ABAP语言开发基础2.4 控制结构2.4.1 分支控制 IF EXPRESSION ELSE ENDIF CASE VAR WHEN VALUE1 WHEN VALUE2 ENDCASE 第15页,共39页。课程编码:PFO27课程名称二、ABAP语言开发基础2.4 控制结构2.4.1 分支控制 DATA:TEXT1 VALUE X,TEXT2 VALUE Y,TEXT3 VALUE Z,STRING VALUE A.CASE STRING.WHEN TEXT1.WRITE:/String is,TEXT1.WHEN TEXT2.WRITE:/St
9、ring is,TEXT2.WHEN TEXT3.WRITE:/String is,TEXT3.WHEN OTHERS.WRITE:/String is not,TEXT1,TEXT2,TEXT3.ENDCASE.第16页,共39页。课程编码:PFO27课程名称二、ABAP语言开发基础2.4 控制结构2.4.2 循环控制 2.4.2.1 无条件循环DO N TIMES.ENDDO.2.4.2.2 条件循环 WHILE.WNDWHILE.第17页,共39页。课程编码:PFO27课程名称二、ABAP语言开发基础2.4 控制结构 2.4.2 循环控制 例:DO 4 TIMES.IF SY-INDEX
10、=3.EXIT.ENDIF.WRITE SY-INDEX.ENDDO.产生如下输 出:1 2 第18页,共39页。课程编码:PFO27课程名称二、ABAP语言开发基础2.5 字符处理连接字符串CONCATENATE .INTO SEPARATED BY.DATA:C1(10)VALUE Sum,C2(3)VALUE mer,C3(5)VALUE holi,C4(10)VALUE day,C5(30),SEP(3)VALUE -.CONCATENATE C1 C2 C3 C4 INTO C5.WRITE C5.CONCATENATE C1 C2 C3 C4 INTO C5 SEPARATED B
11、Y SEP.WRITE/C5.该过程的输 出如下:SummerholidaySum-mer-holi-day第19页,共39页。课程编码:PFO27课程名称二、ABAP语言开发基础2.5 字符处理除了合并字符串外,还提供如下一些字符串操作:SPLIT 拆分SEARCH 查找REPLACE 替换STRLEN 确定长度SHIFT 移动字符串内容CONDENSE 删除多余的空格OVERLAY 用一个字符串覆盖另外一个字符串第20页,共39页。课程编码:PFO27课程名称课程总结v类型和结构定义v控制结构v字符串操作课程回顾第21页,共39页。课程编码:PFO27课程名称纲 要ONTENTS1ABAP
12、开发平台简介4SAP数据库使用 课程目录3ABAP内表使用方法2ABAP语言开发基础第22页,共39页。课程编码:PFO27课程名称三、ABAP内表使用方法3.1 内表概念在sap中,内表是非常灵活的大批量数据的管理形式,用于在程序进行期间管理一组结构相同的数据。可以象关系型数据表一样进行增删改操作,然而又不同于数据库表,内表仅在程序运行期间才存在数据。程序对内表的行操作不能直接进行,必须通过一种接口来传输,这个接口就是工作区。3.2 内表分类标准表:每一行对应一个逻辑索引SY-TABIX,填充内表的时候,可以将数据附加在现有行之后,也可 以插入到指定的位置,程序对内表行的寻址操作可通过关键字
13、或索引进行。在对表进行插 入删除等操作时,各数据行在内存中的位置不变,系统仅重新排列各数据行的索引值。DATA IT_EKKO TYPE STANDARD TABLE OF EKKO(WITH NON-UNIQUE KEY EBELN.).排序表:排序表也有逻辑索引,不同的是排序表总是按其表关键字升序排列后再进行存储,也就是 在内存中的位置发生改变。查询时用二分法查询,且UNIQUE 或NON-UNIQUE必须制定。DATA IT_EKPO TYPE SORT TABLE OF EKPO WITH NON-UNIQUE KEY EBELN EBELP.哈希表:哈希表没有索引,只有关键字,且表内
14、的数值为以KEY为单位进行合计。查询时用哈希算法 进行查询,其效率非常高,且UNIQUE 必须指定。DATA IT_MAKT TYPE HASHED TABLE OF MAKT WITH UNIQUE KEY MATNR.第23页,共39页。课程编码:PFO27课程名称三、ABAP内表使用方法3.3 内表定义3.3.1 直接定义 DATA:BEGIN OF GT_LINE OCCURS 0,COLUMN1 TYPE I,COLUMN2 TYPE I,COLUMN3 TYPE I,END OF GT_LINE.3.3.2 通过引用TYPES定义的结构来创建内表 TYPES:BEGIN OF TY
15、_LINE,COLUMN1 TYPE I,COLUMN2 TYPE I,COLUMN3 TYPE I,END OF TY_LINE.TYPES GT_TAB TYPE TY_LINE OCCURS 0.TYPES GT_TAB TYPE TABLE OF TY_LINE.DATA GT_TAB TYPE TABLE OF TY_LINE.第24页,共39页。课程编码:PFO27课程名称三、ABAP内表使用方法3.3 内表定义3.3.3 引用INCLUDE STRUCTURE来定义 DATA BEGIN OF GT_TAB OCCURS 0.INCLUDE STRUCTURE MARA.DATA
16、 FLG TYPE C.DATA END OF GT_TAB.或 TYPES BEGIN OF GT_TAB OCCURS 0.INCLUDE STRUCTURE MARA.DATA FLG TYPE C.TYPES END OF GT_TAB.第25页,共39页。课程编码:PFO27课程名称三、ABAP内表使用方法3.4 工作区3.4.1 工作区定义 内表是按行进行访问的。必须使用某个工作区域作为与表格互相 传输数据的接口。第26页,共39页。课程编码:PFO27课程名称三、ABAP内表使用方法3.4 工作区3.4.1 工作区应用 工作区的应用,跟定义的内表是息息相关,工作区针对带表头行 的
17、内表和不带表头行的内表所用的增删改方式是不同的。第27页,共39页。课程编码:PFO27课程名称三、ABAP内表使用方法3.5 内表操作3.5.1 插入内表行 append to “不带表头行 append “带表头行 或 insert into INDEX idx “不带表头行insert INDEX idx “带表头行-如果没有指定INDEX,则默认插入到内表最后一行 INSERT LINES OF FROM n1 TO n2 INTO TABLE INDEX.-将内表中部分或全部的数据行整体插入另一内表(两个内表必须具有相同的行结构)3.5.2 读取内表行 read into INDEX
18、 idx read INDEX IDX 3.5.3 修改内表行 modify from INDEX idx modify INDEX idx 第28页,共39页。课程编码:PFO27课程名称三、ABAP内表使用方法3.5 内表操作3.5.4 删除内表行 delete INDEX idx.DELETE FROM n1 TO n2 WHERE.3.5.5 内表行循环 Loop at into .endloop.“带表头行的内表循环操作 Loop at .endloop.“不带表头行内表操作 3.5.6 清空内表 clear .“清空不带表头行内表 clear.“清空带表头行内表 第29页,共39页
19、。课程编码:PFO27课程名称三、ABAP内表使用方法3.5 内表操作3.5.7 内表排序 SORT ASCENDING|DESCENDING AS TEXT-ASCENDING和DESCENDING指定升序还是降序排列,如果不指定,缺省排序方式是升序-AS TEXT影响字符字段的排序方式,如果不使用该选项,系统将按字符平台相应内部编码进行排序,否则,系统根据当前语言按字母顺序排序字符字段 3.5.8 删除重复内表行 DELETE ADJACENT DUPLICATES FROM COMPARING.-删除重复行之前须对内表进行排序 3.5.9 判断内表行数 DESCRIBE TALBE LI
20、NES.第30页,共39页。课程编码:PFO27课程名称课程总结v内表定义v内表操作课程回顾第31页,共39页。课程编码:PFO27课程名称纲 要ONTENTS1ABAP开发平台简介课程目录2ABAP语言开发基础4SAP数据库使用 ABAP内表使用方法3 第32页,共39页。课程编码:PFO27课程名称四、SAP数据库使用4.1 OPEN SQL 4.1.1 SELECT SELECT FROM INTO WHERE GROUP BY ORDER BY Example:select*from spfli into gt_table where COMPANY=DELTA.select sing
21、le*from spfli into gw_table where COMPANY=DELTA.4.1.2 INSERT INSERT FROM TABLE ACCEPTING DUPLICATE KEY Example:insert spfli from table gt_table.insert spfli from gw_table.Or insert into spfli value gw_table.第33页,共39页。课程编码:PFO27课程名称四、SAP数据库使用4.1 OPEN SQL 4.1.3 UPDATE/MODIFY UPDATE FROM Example:update
22、 spfli from gw_table.UPDATE SET=WHERE Example:update user set NO=34051920 COMPANY=DELTA where TEL=4526107.UPDATE FROM TABLE Example:update spfli from table gt_table.4.1.3 DELETE DELETE FROM .Example:delete spfli from gw_table.DELETE FROM WHERE 第34页,共39页。课程编码:PFO27课程名称四、SAP数据库使用4.1 OPEN SQL 4.1.3 UPD
23、ATE/MODIFY UPDATE FROM Example:update spfli from gw_table.UPDATE SET=WHERE Example:update user set NO=34051920 COMPANY=DELTA where TEL=4526107.UPDATE FROM TABLE Example:update spfli from table gt_table.4.2 NATIVE-SQLEXEC SQL PERFORMING.;ENDEXEC.第35页,共39页。课程编码:PFO27课程名称课程总结v数据库表的增加、删除和修改课程回顾第36页,共39页。课程编码:PFO27课程名称第37页,共39页。课程编码:PFO27课程名称课 程 信 息研发人 部门杨晓文 产品管理部研发时间2015-02-xx更新人 部门更新时间更新次数第0次审核人 部门李二强 产品管理部姓名 商学院体系培训部 课程名称第38页,共39页。课程编码:PFO27课程名称演讲完毕,谢谢观看!第39页,共39页。