ABAP开发培训入门.ppt_第1页
ABAP开发培训入门.ppt_第2页
ABAP开发培训入门.ppt_第3页
ABAP开发培训入门.ppt_第4页
ABAP开发培训入门.ppt_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、ABAP开发培训,什么是ABAP?,Advanced Business Application Programming 高级商业应用程序设计。是SAP专有的开发语言,SAP的应用程序就是用ABAP语言开发的。,ABAP开发培训,ABAP的开发环境展示,ABAP开发培训,SAP的三层架构,表示层,应用层,数据库,ABAP开发培训,ABAP程序的种类,报表 最常见的ABAP程序,展示数据,比如财务的三大报表。 接口 常见的接口如RFC/BAPI,iDoc,Webservice。这些都是以Function Module为基础的。 增强 对标准程序的增强(改动)。 Dialog 带交互的程序,SAP标

2、准的事物码很多就是Dialog。,ABAP开发培训,ABAP的数据类型-基本数据类型,ABAP开发培训,用户定义的基本数据类型完全是以预定义的基本数据类型为基础的。使用TYPES语句定义自己的基本数据类型。 TYPES: NUMBER TYPE I, LENGTH TYPE P DECIMALS 2, CODE(3) TYPE C. DATA: NO_FLIGHTS TYPE NUMBER, NO_PASSENGERS TYPE NUMBER, DISTANCE TYPE LENGTH, HEIGHT TYPE LENGTH, CITY_CODE TYPE CODE, COUNTRY_CODE

3、 TYPE CODE. 数据类型可以在程序内部定义,但只能程序内部用;也可以在程序外部定义,这样全局都可以使用 (事物码SE11)。,ABAP的数据类型-用户定义的基本数据类型,ABAP开发培训,两种结构化数据类型: 结构(Structure) 和 内表(Internal Table)。 Structure: 本质上讲是一个由多个字段组成的字段串,在程序中只能存储一条数据,如果不好抽象化,可以理解为Excel的一行。 Internal Table: 多行多列,可以理解为一个Structure纵向拉长。内表分3种,标准表,排序表,哈希表。 结构和内表可以在程序内部定义,但只能程序内部用;也可以在

4、程序外部定义,这样全局都可以使用 (事物码SE11)。,ABAP的数据类型-结构化数据类型,ABAP开发培训,TYPES语句定义类型,DATA语句声明变量,如刚才用到的例子: TYPES: NUMBER TYPE I, LENGTH TYPE P DECIMALS 2, CODE(3) TYPE C. DATA: NO_FLIGHTS TYPE NUMBER, DISTANCE TYPE LENGTH, CITY_CODE TYPE CODE, CONSTANTS语句定义常量: CONSTANTS PI TYPE P DECIMALS 5 VALUE 3.14159. Hint: 变量的命名参

5、照开发规范。,ABAP程序的数据定义,ABAP开发培训,实际应用中,更多是直接用LIKE语句定义变量。 DATA: ZMATNR LIKE MARA-MATNR, “物料号 ZMTART LIKE MARA- MTART. “物料类型 或者 DATA ZMATNR LIKE MARA-MATNR. DATA ZMTART LIKE MARA- MTART. 两者的意义完全相同。 DATA 变量名 LIKE 表-字段名(结构-字段名) DATA 变量名 LIKE 系统标准变量,ABAP程序的数据定义,ABAP开发培训,结构变量的定义:结构 DATA : BEGIN OF GS_MARC, MAT

6、NR LIKE MARC-MATNR, WERKS LIKE MARC-WERKS, PSTAT LIKE MARC- PSTAT, BWTTY LIKE MARC- BWTTY, EKGRP LIKE MARC- EKGRP, END OF GS_MARC. 这是一个5个字段的结构。G代表global, S代表Structure. 结构也可以用SE11事物码在系统里定义,所有程序都可以使用,但命名必须以Z开头。 Hint: 结构变量的命名有规则,参见开发规范,ABAP程序的数据定义,ABAP开发培训,结构变量的定义:内表 DATA : BEGIN OF GS_MARC, MATNR LIKE

7、 MARC-MATNR, WERKS LIKE MARC-WERKS, PSTAT LIKE MARC- PSTAT, BWTTY LIKE MARC- BWTTY, EKGRP LIKE MARC- EKGRP, END OF GS_MARC. DATA: GT_MARC LIKE STANDARD TABLE OF GS_MARC. GT_MARC就是一个标准内表。 Hint: 结构变量的命名有规则,参见开发规范,ABAP程序的数据定义,ABAP开发培训,结构变量的定义:结构和内表的多种定义方式 鉴于SAP有大量标准的数据类型供参考,结构变量的命名有多种方式,例如: (MARC是系统标准表

8、,MAAPV是标准结构,自建结构和自建表同例) 结构: DATA GS_MARC LIKE MARC. 内表: DATA GT_MARC LIKE TABLE OF MARC. 结构: DATA GS_MAAPV LIKE MAAPV. 内表: DATA GT_MAAPV LIKE TABLE OF MAAPV. 结构: DATA GS_MARC2 LIKE LINE OF GT_MARC. 内表: DATA GT_MAAPV2 LIKE TABLE OF GS_MAAPV. Hint: 结构变量的命名有规则,参见开发规范,ABAP程序的数据定义,ABAP开发培训,结构变量的定义:内表和工作区

9、。 工作区是相对于内表而言的,在操作内表时,系统需要先把数据从内表取出来存放到对应的工作区,再进行相关的操作。通常情况下,定义一个内表的同时需要定义一个工作区。工作区通过结构定义。 DATA GS_MARC LIKE MARC. DATA GT_MARC LIKE TABLE OF MARC. 结构GS_MARC就可以作为内表GT_MARC的工作区。 其他定义方式同此例。,ABAP程序的数据定义,ABAP开发培训,结构变量的定义:表头。 DATA GT_MARC LIKE MARC OCCURS 0 WITH HEADER LINE. 此语句会声明一个带有同名表头的内表,表头可作为工作区。这种

10、命名方式会节省一些代码量,但不推荐使用,容易混乱。还是推荐使用一个内表+一个工作区的方式。 有些比较旧的程序用的是这种带表头的内表,在这些程序里,以GT_MARC为例:GT_MARC表示工作区,GT_MARC-MATNR表示字段,GT_MARC表示整个内表。,ABAP程序的数据定义,ABAP开发培训,赋值: DATA VAR1 (3) TYPE C VALUE abc. DATA VAR2(3) TYPE C. MOVE VAR1 TO VAR2. VAR2 = VAR1. VAR2 = abc. 以上3条语句意义返回结果相同。 赋值时注意数据格式,要求数据格式相同,或者两边存在转换规则,否则

11、会报错。,基本ABAP语句,ABAP开发培训,运算: 二元操作符包括: + :加法 - :减法 * :乘法 / :除法 * :乘方 DIV :整除忽略余数 MOD :取余数 需要注意,圆括号和操作符都是关键字,需要跟操作数之间至少用一个空格分开。 (1+2)*3 应该写成 ( 1 + 2 ) * 3,基本ABAP语句,ABAP开发培训,条件:,基本ABAP语句,ABAP开发培训,循环: ABAP的循环分四种: DO . WHILE. ENDDO. ENDWHILE. LOOP SELECT. ENDLOOP. ENDSELECT.,基本ABAP语句,ABAP开发培训,循环: DO ENDDO.

12、 DO和ENDDO之间的语句块会无限运行,直到遇到条件控制的跳出循环语句如EXIT等。在DO语句中还可以指定最多运行的次数,否则的话,将会出现无限循环无限循环。 WHILE ENDWHILE. 在WHILE和ENDWHILE之间的语句块会一直执行,直到不再满足WHILE后面所指定的条件。WHILE循环用的不多。,基本ABAP语句,ABAP开发培训,循环: LOOP ENDLOOP. 循环读取内表的数据到工作区,供程序处理。实际应用最多的循环语句。一般情况下ABAP推荐把数据从数据库(硬盘)读到内表(内存),几乎有程序就有内表,有内表就有LOOP循环。 SELECT ENDSELECT. 循环读

13、数据库。影响效率,不建议使用,建议用FOR ALL ENTRIES IN语句一次性把数据读入内表。,基本ABAP语句,ABAP开发培训,消息: MESSAGE 语句向程序的用户发送对话消息,使用MESSAGE 语句必须指定三位数的消息号和消息类。 MESSAGE E001(ZFI001)。 事物码SE91维护消息类和消息。 也可以在程序里写硬消息: MESSAGE 程序运行错误 TYPE E. 但不推荐使用这种不规范的方式。,基本ABAP语句,ABAP开发培训,操作结构和内表: 结构 访问结构里的字段。 GS_MARC-MATNR. 结构里最常用的语句是MOVE-CORRESPONDING 语

14、句。把一个结构的内容同时全部拷贝到另一个结构中。只有源结构和目标结构中有相同名称的组件才会拷贝,而目标结构中名称无法对应的组件保持不变。 需要注意,如果两个结构中同名的组件有不同定义的话,拷贝时可能会出错。,基本ABAP语句,ABAP开发培训,操作结构和内表: 内表 访问单条记录 一般来说,需要一个与内表行结构相同相同的工作区来处理单条记录。 APPEND:往内表的最后追加一条记录,只能用于标准表。 INSERT:向内表插入一条记录,在标准表里跟 APPEND 的效果一样,在排序表里就插入到键指定的位置,在哈希表里则根据哈希运算法则插入到指定位置。 READ TABLE:把表的指定行拷贝到结构

15、中。 MODIFY:使用结构的内容重写表的指定行。 DELETE:删除表的指定行。 COLLECT:把结构中的内容累加到内表具有相同键的行上,这时,只有非键字段才执行累加,并且只有非键字段都是数值的时候才能执行这个语句。一般内表里多个字段需要同时汇总时会用到COLLECT语句,比如财务的一些报表。,基本ABAP语句,ABAP开发培训,操作结构和内表: 内表 访问多条记录(结果集) 处理结果集合 LOOP ENDLOOP:LOOP 语句一条一条的读出内表的数据行,写入 INTO 字句指定的结构中,结构的内容可用于输出,或者修改后写回内表。 DELETE:删除满足条件的所有行。 INSERT:把一

16、个内表中的多行拷贝到另一个内表中。 APPEND:把一个内表中的多行追加到另一个标准表中。 想修改内表的某一行只能先把那行读到工作区,修改工作区后再写回内表,而不能以数组的方法访问到内表的指定一行,这是跟其他语言很不一样的地方。,基本ABAP语句,ABAP开发培训,操作结构和内表: 内表 使用索引读表(标准表和排序表) LOOP 中用 FROM - TO 子句可以读指定索引段的记录。 READ 中用 INDEX 子句可以读指定索引的一条记录。 使用条件读表 LOOP 中用 WHERE 子句可以读满足一定条件的记录。 READ 中用 With KEY 子句可以读满足主键条件的记录。 内表排序 标

17、准表和排序表可以使用 SORT 语句对指定字段进行排序,如果没有指定升序或者降序就默认使用升序。,基本ABAP语句,ABAP开发培训,操作结构和内表: 内表 REFRESH:清除整个内表的内容,释放部分内存,保留一些以备后续操作。 CLEAR:对于没有表头的内表,跟 REFRESH 一样,清除内表的内容。对于有表头的内表,则只初始化表头。 FREE:清除整个内表的内容,释放所有内存。在程序里,当内表以后不再使用的时候可以使用 FREE,这样能尽量多释放一些不用的内存。,基本ABAP语句,ABAP开发培训,数据获取 SAP后台可以连接多种数据库,ORACLE, DB2, SQLSERVER,SY

18、BASE 每种数据库都有自己特点的SQL语法,不可能在开发时根据后台数据库的种类选择SQL语法,所以SAP用的是无关SQL标准的开放SQL,执行时由SAP负责转化成各种数据库能运行的SQL。,数据库操作,ABAP开发培训,数据获取 使用开放SQL的 SELECT 语句来执行查询,它包含几个基本的组成部分。 基本语法:SELECT FROM INTO WHERE SELECT 后面的块说明了需要读表的哪些字段。 FROM 后面的块说明了需要读哪个数据源(数据源可以是表或者视图)。 INTO 后面的块说明了读出的字段要放到哪个目标数据对象中(结构或内表)。 WHERE 后面的块说明了读数据的基本条

19、件,可选。 SELECT MATNR WERKS PSTAT BWTTY EKGRP INTO TABLE GT_MARC FROM MARC WHERE WERKS = 1000.,数据库操作,ABAP开发培训,数据获取 获取单条数据 用 SELECT SINGLE 语句。 如果目标结构的数据结构与查询字段的顺序不一致,或者使用 * 这样的通配符来指定查询字段,就需要CORRESPONDING FIELDS OF 子句,它会自动在源字段和目标字段之间找名称相同的项自动对应填入。这是常用的方式。 SELECT SINGLE * INTO CORRESPODING FIELDS OF GS_MA

20、RC FROM MARC WHERE MATNR = 000000001 AND WERKS = 1000. SELECT SINGLE语句是在数据库表所有的KEY键都被用到的时候使用的,执行效率很高,可以用* 。,数据库操作,ABAP开发培训,一个常见的报表的组成 选择屏幕。输入数据的筛选条件。 数据定义。定义程序中用到的变量和常量,包括单个变量、结构、内表等。 数据获取。一般是通过一定的条件从数据库读取出来,或者上传的TXT/EXCEL文档。 数据处理。按照FUNCTION SPEC的要求,对获得的数据进行处理(增删改BAPI)。 展示。输出处理好的数据。,报表程序介绍,ABAP开发培训,

21、选择屏幕-屏幕元素定义 PARAMETERS: P_WERKS LIKE MARD-WERKS OBLIGATORY. “工厂 SELECT-OPTIONS: S_MATNR FOR MARD-MATNR, “物料 S_LGORT FOR MARD-LGORT, “库存地点 S_LFGJA FOR MARD-LFGJA, “年度 S_LFMON FOR MARD-LFMON. “月度,报表程序介绍,ABAP开发培训,选择屏幕-屏幕效果,报表程序介绍,ABAP开发培训,选择屏幕-数据定义 TABLES: MARD,MAKT. DATA: BEGIN OF GS_MARD, MATNR LIKE

22、MARD-MATNR, WERKS LIKE MARD-WERKS, LGORT LIKE MARD-LGORT, PSTAT LIKE MARD-PSTAT, LFGJA LIKE MARD-LFGJA, LFMON LIKE MARD-LFMON, LABST LIKE MARD-LABST, MAKTX LIKE MAKT-MAKTX, END OF GS_MARD. DATA GT_MARD LIKE TABLE OF GS_MARD.,报表程序介绍,ABAP开发培训,选择屏幕-屏幕输出相关数据定义 TYPE-POOLS: SLIS. *ALV 变量定义. DATA: WS_FIELD

23、CAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE, I_FIELDCAT1 TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE. DATA: WS_FIELDGROUPS_TAB TYPE SLIS_T_SP_GROUP_ALV, WS_LAYOUT TYPE SLIS_LAYOUT_ALV, WS_SORTFIELDS_TAB TYPE SLIS_T_SORTINFO_ALV WITH HEADER LINE, WS_EVENTS TYPE SLIS_T_EVENT. DATA: V_REPID LIKE SY-REP

24、ID.,报表程序介绍,ABAP开发培训,数据获取和处理 SELECT AMATNR AWERKS ALGORT APSTAT ALFGJA ALFMON ALABST BMAKTX INTO TABLE GT_MARD FROM MARD AS A INNER JOIN MAKT AS B ON AMATNR = BMATNR WHERE BSPRAS = 1 AND AWERKS = P_WERKS AND AMATNR IN S_MATNR AND ALGORT IN S_LGORT AND ALFGJA IN S_LFGJA AND ALFMON IN S_LFMON. DELETE GT_MARD WHERE MAKTX IS INITIAL.,报表程序介绍,ABAP开发培训,输出-构建输出元素 WS_FIELDCAT-TABNAME = GT_MARD. WS_FIELDCAT-FIELDNAME = MATNR. “字段名 WS_FIELDCAT-SELTEXT_L = 物料. ”字段文本 WS_FIELDCAT-COL_POS = 1. “输出位置 WS_FIELDCAT-OUTPUTLEN = 18. ”输出长度 WS_FIELDCAT-DATATYPE = CHAR. “字段类型 AP

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论