《ABAP培训(共65张).pptx》由会员分享,可在线阅读,更多相关《ABAP培训(共65张).pptx(65页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、ABAP开发培训SAP ABAP顾问 余裕辉2007年10月22日SAP AG 2002, Title of Presentation, Speaker Name 2ABAP开发培训目标 让开发人员对让开发人员对SAP ABAP的开发流程、的开发流程、ABAP语法及开发的基本技术有语法及开发的基本技术有深入的了解和认识深入的了解和认识SAP AG 2002, Title of Presentation, Speaker Name 3培训方式 知识讲解知识讲解 实例演示实例演示 练习练习&QASAP AG 2002, Title of Presentation, Speaker Name 4培训
2、内容ABAP开发过程中常用的开发过程中常用的TCODEABAP开发的简要流程开发的简要流程ABAP报表开发报表开发Query的使用的使用SAP AG 2002, Title of Presentation, Speaker Name 5ABAP开发过程中常用的TCODESE80ABAP开发平台开发平台SE11数据字典数据字典SE16查看表数据查看表数据SE38程序编辑器程序编辑器SE37函数编辑器函数编辑器ST05执行跟踪执行跟踪SE10传输组织器传输组织器SE93事务码维护事务码维护SE30ABAP运行时间分析运行时间分析ABAPDOCUABAP文档文档SHDB屏幕录制屏幕录制SMARTFO
3、RMS表单维护表单维护SAP AG 2002, Title of Presentation, Speaker Name 6ABAP开发的简要流程Keyuser提出需求Add-on与keyuser商讨需求Add-on开发程序开发程序Keyuser测试传 输Add-on修改程序Functional Spec(书面&电子)UAT(书面&电子)Transport requestModify SpecSAP AG 2002, Title of Presentation, Speaker Name 7ABAP开发的简要流程 1. 1. 创建程序创建程序(SE80)(SE80) 2. 2. 编写代码编写代码
4、(SE80)(SE80) 3. 3. 激活程序激活程序(SE80)(SE80) 4. 4. 创建事务码创建事务码(SE93)(SE93) 5. 5. 维护维护Request number(SE10)Request number(SE10)SAP AG 2002, Title of Presentation, Speaker Name 8练习一 练习练习create程序和程序和request number.(5)SAP AG 2002, Title of Presentation, Speaker Name 9报表程序分类 普通报表程序普通报表程序 输出结果格式固定,不能对其进行交互式操作;输出
5、结果格式固定,不能对其进行交互式操作; 交互式报表程序交互式报表程序 通过特定的触发事件,比如双击、菜单、按钮和功能键等,可以通过特定的触发事件,比如双击、菜单、按钮和功能键等,可以对报表结果进行操作;对报表结果进行操作;SAP AG 2002, Title of Presentation, Speaker Name 10报表程序结构SAP AG 2002, Title of Presentation, Speaker Name 11处理块的类型SAP AG 2002, Title of Presentation, Speaker Name 12事件块 组成报表程序的基本单位;组成报表程序的基
6、本单位; 原则上每个事件块由各自的关键字为起始,原则上每个事件块由各自的关键字为起始,不同的事件块执行不同的任务;不同的事件块执行不同的任务; 事件块由事件块由ABAP运行时环境调用,其调用运行时环境调用,其调用顺序固定,与程序编码顺序无关;顺序固定,与程序编码顺序无关; 缺省的事件块缺省的事件块START-OF-SELECTIONSAP AG 2002, Title of Presentation, Speaker Name 13事件块 INITIALIZATION AT SELECTION-SCREEN START-OF-SELECTION GET END-OF-SELECTION TOP
7、-OF-PAGE END-OF-PAGESAP AG 2002, Title of Presentation, Speaker Name 14事件块详细讲解 事件块的简单处理过程:事件块的简单处理过程: ABAP程序运行的时候,程序运行的时候,INITIALIZATION首先被调用;首先被调用; 经过初始化的输入屏幕会显示在经过初始化的输入屏幕会显示在表示服务器;表示服务器; 用户离开输入屏幕的时候,用户离开输入屏幕的时候,START-OF-SELCTION事件会事件会被自动调用;被自动调用; 结果数据会以列表的形式显示在结果数据会以列表的形式显示在第二个屏幕上;第二个屏幕上;SAP AG 2
8、002, Title of Presentation, Speaker Name 15事件块的语法源代码中的事件块顺序不影响它们的执行顺序SAP AG 2002, Title of Presentation, Speaker Name 16事件块编码规则(1) INITIALIZATION 通常在此事件块中设定输入屏幕字段的初始值通常在此事件块中设定输入屏幕字段的初始值 例如:例如: INITIALIZATION . P_DATE = 20030201 . 效果:效果: 输入屏幕的日期字段初始显示值为输入屏幕的日期字段初始显示值为2003年年2月月1日日SAP AG 2002, Title o
9、f Presentation, Speaker Name 17事件块编码规则(2) AT SELECTION-SCREEN 通常在此事件块中进行用户输入数据的合法性检查,发现错误则以消通常在此事件块中进行用户输入数据的合法性检查,发现错误则以消息的形式给出警示,直到用户输入正确的数值息的形式给出警示,直到用户输入正确的数值 例如:例如: AT SELECTION-SCREEN . IF P_DATE = SPACE . MESSAGE E001 . ENDIF. 效果:效果: 如果字段如果字段P_DATE为空,则程序会用消息为空,则程序会用消息001“日期字段不能为日期字段不能为空!空!”来提
10、示用户必须输入一个日期。而且输入屏幕会等待用户输入,来提示用户必须输入一个日期。而且输入屏幕会等待用户输入,知道该字段数值合法知道该字段数值合法SAP AG 2002, Title of Presentation, Speaker Name 18事件块编码规则(3) START-OF-SELCTION 通常在此事件中针对业务需求进行系统数据的查询通常在此事件中针对业务需求进行系统数据的查询例如:例如: start-of-selection . perform get_data_for_oil .效果:效果: 在输入屏幕用户按下执行按钮后,子程序在输入屏幕用户按下执行按钮后,子程序get_dat
11、a_for_oil被执行,被执行, 在其中获得业务相关的数据存放到内表或者其它变量,这些数据在在其中获得业务相关的数据存放到内表或者其它变量,这些数据在END-OF-SELECTION事件块中被输出事件块中被输出SAP AG 2002, Title of Presentation, Speaker Name 19事件块编码规则(4) END-OF-SELCTION 通常在此事件中进行结果清单的输出通常在此事件中进行结果清单的输出例如:例如: end-of-selection . write : 23(1) sy-vline, 24(20) tab-gas_plan right-justifie
12、d ,效果:效果: 数据以清单的形式输出数据以清单的形式输出SAP AG 2002, Title of Presentation, Speaker Name 20事件块编码规则(5) GET 从逻辑数据库中得到数据(较少用)从逻辑数据库中得到数据(较少用) TOP-OF-PAGE 在此事件块中设计输出清单的页头在此事件块中设计输出清单的页头 例如:例如: TOP-OF-PAGE write : /1(240) 汽柴油日出厂情况表汽柴油日出厂情况表 centered . write : /20(8) 日期:日期: , 29(10) s_date , 180(6) 单位:单位: , 190(10)
13、 吨吨 .SAP AG 2002, Title of Presentation, Speaker Name 21事件块编码规则(6) END-OF-PAGE 在此事件中设定输出清单的页脚在此事件中设定输出清单的页脚报表编程模板报表编程模板:例如:例如: END-OF-PAGE . Write : 制作人制作人 , p_name .SAP AG 2002, Title of Presentation, Speaker Name 22练习二 建立报表程序事件块(建立报表程序事件块(5)SAP AG 2002, Title of Presentation, Speaker Name 23程序名 RE
14、PORT rep. Additions: 1. . NO STANDARD PAGE HEADING 2. . LINE-SIZE col 3. . LINE-COUNT n(m) 表单输出每页由表单输出每页由n行,其中的行,其中的m行作为页脚;行作为页脚; 4. . MESSAGE-ID mid 消息对象消息对象 5. . DEFINING DATABASE ldb 使用逻辑数据库,自动产生使用逻辑数据库,自动产生SAP AG 2002, Title of Presentation, Speaker Name 24Tables 语句 基本格式基本格式 TABLES dbtab. Dbtab是
15、指是指ABAP字典的一个数据库对象,可以是透明表格、视图和结字典的一个数据库对象,可以是透明表格、视图和结构;构; 该语句的作用是声明了一个表工作区,类似于该语句的作用是声明了一个表工作区,类似于C语言里面的语言里面的STRUCTURE和和PASCAL语言里面的语言里面的RECORD; 这个表工作区由多个字段组成,其名称、类型和这个表工作区由多个字段组成,其名称、类型和dbtab的字段完全相同;的字段完全相同; ABAP字典对象中字段的类型自动的转换为字典对象中字段的类型自动的转换为ABAP程序的类型;程序的类型; 表工作区通常是一个全局变量。表工作区通常是一个全局变量。SAP AG 2002
16、, Title of Presentation, Speaker Name 25ABAP数据类型SAP AG 2002, Title of Presentation, Speaker Name 26Types语句 定义自定义数据类型定义自定义数据类型 语法:语法: types .定义简单数据类型:定义简单数据类型: TYPES name(10) type c.SAP AG 2002, Title of Presentation, Speaker Name 27DATA语句 定义数据变量定义数据变量 语法:语法:DATA 定义一个简单类型的变量定义一个简单类型的变量 DATA: COUNTER
17、TYPE I VALUE 1, FLAG TYPE C length 10, Flag(10), WEIGHT TYPE P DECIMALS 2 VALUE 1.25. DATA NAME LIKE FLAG.SAP AG 2002, Title of Presentation, Speaker Name 28Internal TableInternal Table 内表 ABAP中的内表相当于其他语言中的矩阵,在操作上有复制、删除、插入、修改中的内表相当于其他语言中的矩阵,在操作上有复制、删除、插入、修改等功能,分为标准表、排序表和哈希表三种类型。等功能,分为标准表、排序表和哈希表三种类型
18、。 使用使用 DATA 定義定義 若使用若使用DATA來來定義定義Internal Table, 可分成要不要有可分成要不要有HEADER LINE, HEADER LINE 就是所謂的就是所謂的 WORK AREA, 用在用在數據數據的存取上的存取上. 語法語法: DATA OCCURS WITH HEADER LINE Example: DATA VECTOR TYPE I OCCURS 10 WITH HEADER LINE. DATA: begin of wa occurs 0, col1(10), col2 type I, end of wa. DATA itab like tabl
19、e of wa with header line.SAP AG 2002, Title of Presentation, Speaker Name 29定义输入屏幕 用用SELECTION-SCREEN语句来定义输入屏幕语句来定义输入屏幕SAP AG 2002, Title of Presentation, Speaker Name 30SELECTION-SCREEN语法特殊效果特殊效果SAP AG 2002, Title of Presentation, Speaker Name 31输入字段设计 PARAMETERS 语句语句 SELECT-OPTIONS语句语句SAP AG 2002,
20、 Title of Presentation, Speaker Name 32PARAMETERS语法SAP AG 2002, Title of Presentation, Speaker Name 33Select-options语法SAP AG 2002, Title of Presentation, Speaker Name 34WRITE语句 按照指定的格式把变量里面的数据输出到屏幕按照指定的格式把变量里面的数据输出到屏幕 语法:语法:SAP AG 2002, Title of Presentation, Speaker Name 35WRITE语句的选项 根据选项的不同,根据选项的不
21、同,WRITE语句可以输出到屏幕、输出到变量、以复选框语句可以输出到屏幕、输出到变量、以复选框的形式输出、以图标的格式输出的形式输出、以图标的格式输出SAP AG 2002, Title of Presentation, Speaker Name 36练习三 编写一支简单的报表程序,选择屏幕上创建一编写一支简单的报表程序,选择屏幕上创建一parameters,并设置必须,并设置必须输入,之后将输入的值赋给已定义好的字符变量,最后输出该变量的值,输入,之后将输入的值赋给已定义好的字符变量,最后输出该变量的值,同时换行输出自己的姓名同时换行输出自己的姓名(20)SAP AG 2002, Title
22、 of Presentation, Speaker Name 37OPEN SQL 语法 R/3R/3對於存放在對於存放在Relation Database Relation Database 的資料可使用的資料可使用 SQL SQL 指令讀取或處理指令讀取或處理, , 指令種類可分成指令種類可分成DDL (DataDDL (Data Definition Language) Definition Language)指令指令, , 如如CREATE, CREATE, 及及DML (DataDML (Data Manipulation Language), Manipulation Langua
23、ge), 如如 SELECTSELECT及及INSERTINSERT等等。 處理方式分成處理方式分成 OPEN SQL OPEN SQL 及及 NATIVE SQL, NATIVE SQL, 前者在處理時前者在處理時, Database , Database 與與Command Command Interpreter Interpreter 間有一間有一BufferBuffer區區, , 如如SELECT SELECT * * FROM, FROM, 後者則直接處理資料庫後者則直接處理資料庫, , 如如 EXCE EXCE SQL SELECTSQL SELECT等等。 兩個重要的系統變數兩個
24、重要的系統變數: : SY-SUBRC: SY-SUBRC: 傳回傳回 0 0 表成功執行指令表成功執行指令, 4 , 4 表未找到符合條件資料表未找到符合條件資料 SY-DBCNT: SY-DBCNT: 正處理的資料筆數正處理的資料筆數SAP AG 2002, Title of Presentation, Speaker Name 38内表的操作 内表操作内表操作: Append Collect Read Modify Delete Loop SortSAP AG 2002, Title of Presentation, Speaker Name 39APPEND ITAB 語法語法: AP
25、PEND LINES OF FROM TO TO 將將的元素加入至的元素加入至中中, 可選取自可選取自至至的範圍的範圍 Example: APPEND LINES OF ITAB TO JTAB. ITAB-COL1 = 1. ITAB-COL2 = 2. APPEND ITAB.SAP AG 2002, Title of Presentation, Speaker Name 40COLLECT ITAB 在加入新值时将有相同的在加入新值时将有相同的standard keystandard key(非数值字段)的数值字段内容进行汇总(非数值字段)的数值字段内容进行汇总 語法語法: : COLL
26、ECT INTO COLLECT INTO Example: Example: DATA: BEGIN OF ITAB OCCURS 3, DATA: BEGIN OF ITAB OCCURS 3, COL1(3) TYPE C, COL1(3) TYPE C, COL2 TYPE I, COL2 TYPE I, END OF ITAB. END OF ITAB. ITAB-COL1 = ABC. ITAB COL2 = 10. COLLECT ITAB. ITAB-COL1 = ABC. ITAB COL2 = 10. COLLECT ITAB. ITAB-COL1 = XYZ. ITAB-
27、COL2 = 20. COLLECT ITAB. ITAB-COL1 = XYZ. ITAB-COL2 = 20. COLLECT ITAB. ITAB-COL1 = ABC. ITAB-COL2 = 30. COLLECT ITAB. ITAB-COL1 = ABC. ITAB-COL2 = 30. COLLECT ITAB. “汇总汇总COL2 COL2 至至 COL1=ABC COL1=ABC 的元素上的元素上 執行結果執行結果: : ABC 40 ABC 40 XYZ 20 XYZ 20SAP AG 2002, Title of Presentation, Speaker Name 4
28、1READ ITAB 語法語法: READ TABLE INTO INDEX 自指定位置自指定位置 讀取元素資料讀取元素資料 Example: READ TABLE ITAB INTO LINE INDEX 5 讀取讀取 ITAB的第的第5個元素資料個元素資料, 放入放入 LINE的欄位中的欄位中SAP AG 2002, Title of Presentation, Speaker Name 42MODIFY ITAB 語法語法: MODIFY FROM INDEX TRANSPORTING WHERE TRANSPORTING . : 指定異動的欄位名稱指定異動的欄位名稱 Example:
29、LINE-COL1 = 4. LINE-COL2 = 100. MODIFY ITAB FROM LINE. 將目前位置元素以將目前位置元素以LINE的內容異動的內容異動 Example: LINE-COL1 = 10. MODIFY ITAB FROM LINE INDEX 3 TRANSPORTING COL1. 將第三個元素的將第三個元素的COL1欄位異動為欄位異動為 10SAP AG 2002, Title of Presentation, Speaker Name 43DELETE ITAB 語法語法: DELETE INDEX Example: DELETEITAB INDEX 4
30、 刪除第四個元素刪除第四個元素 加上刪除條件加上刪除條件: DELETE FROM TO WHERE Example: DELETE ITAB FROM 3 TO 10. 刪除第刪除第3至第至第10個元素個元素SAP AG 2002, Title of Presentation, Speaker Name 44LOOP AT ITAB 語法語法: LOOP AT INTO FROM TO WHERE ENDLOOP. 根據設定的範圍選取原素資料根據設定的範圍選取原素資料, 讀完後自動移往下一筆讀完後自動移往下一筆 Example: LOOP AT ITAB INTO LINE WHERE CO
31、L1 100. WRITE: / SY-TABIX,LINE-COL1. ENDLOOP. 僅讀取僅讀取 COL1 100 的元素的元素SAP AG 2002, Title of Presentation, Speaker Name 45SORT ITAB 語法語法: SORT BY . : 可分成遞減可分成遞減(DESCENDING)和遞增和遞增(ASCENDING), 空空白表白表 ASCENDING :為指定的欄位為指定的欄位 Example: SORT ITAB DESCENDING BY COL2. 將將 ITAB 根據根據 COL2欄位遞減排序欄位遞減排序SAP AG 2002,
32、Title of Presentation, Speaker Name 46查表的方法 1. 用用F1直接查看表名与字段名直接查看表名与字段名 2. 用用ST05跟踪表名跟踪表名SAP AG 2002, Title of Presentation, Speaker Name 47报表完成 1. 维护选择文本维护选择文本 2. 创建事务码创建事务码 3. 维护维护Request NumberSAP AG 2002, Title of Presentation, Speaker Name 48练习四 创建一支含数据查询的报表程序并输出结果,创建创建一支含数据查询的报表程序并输出结果,创建tcode
33、,维护,维护request number.(30)SAP AG 2002, Title of Presentation, Speaker Name 49调试程序 如果调试程序?如果调试程序? F5单步执行单步执行 F6跨过程执行跨过程执行 F7返回返回 F8直接执行到断点处直接执行到断点处SAP AG 2002, Title of Presentation, Speaker Name 50练习五 练习调试程序练习调试程序(10)SAP AG 2002, Title of Presentation, Speaker Name 51子程序(1) 子程序类似于子程序类似于C、PASCAL等语言的函等
34、语言的函数数/过程过程 子程序在事件块中被调用子程序在事件块中被调用SAP AG 2002, Title of Presentation, Speaker Name 52子程序(2)语法SAP AG 2002, Title of Presentation, Speaker Name 53子程序接口定义行参实参传递方式行参实参传递方式 值调用值调用 地址调用地址调用SAP AG 2002, Title of Presentation, Speaker Name 54子程序调用(1)语法:语法:PERFORM . SAP AG 2002, Title of Presentation, Speake
35、r Name 55子程序调用(2)SAP AG 2002, Title of Presentation, Speaker Name 56结构作为子程序参数SAP AG 2002, Title of Presentation, Speaker Name 57内表作为子程序参数SAP AG 2002, Title of Presentation, Speaker Name 58函数模块 与子程序与子程序(form)相比,函数模块是在程序外部定相比,函数模块是在程序外部定义的,而且能够在全系统范围内被调用的子程序;义的,而且能够在全系统范围内被调用的子程序;而子程序(而子程序(form)一般来说只在
36、本程序内定义和)一般来说只在本程序内定义和调用。调用。 函数模块具有透明的接口,它的接口与代码分开函数模块具有透明的接口,它的接口与代码分开定义。定义。 函数模块都隶属于某一个函数组函数模块都隶属于某一个函数组 函数模块由函数制作器(函数模块由函数制作器(Function Builder)创)创建建 函数模块可以被本系统的程序调用,而且可以被函数模块可以被本系统的程序调用,而且可以被其它的其它的R/3系统、系统、R/2系统甚至是非系统甚至是非R/3系统调用系统调用(RFC)SAP AG 2002, Title of Presentation, Speaker Name 59函数模块的调用函数模
37、块是程序外部模块,不在程序内编码SAP AG 2002, Title of Presentation, Speaker Name 60函数组 每个函数模块都属于一个函数组 每个函数组里面的函数模块都有相同的主题,实现的功能相互联系 函数组实际上是一个类型为F的ABAP程序,它本身不能够被执行 当一个函数模块被调用的时候,与它同一个函数组的函数都被调到内存区域里面;SAP AG 2002, Title of Presentation, Speaker Name 61函数模块的组成SAP AG 2002, Title of Presentation, Speaker Name 62函数模块的调用语法函数模块可以设置对异常的处理,以防出现运行时错误SAP AG 2002, Title of Presentation, Speaker Name 63QUERY的使用 创建一创建一QUERY并进行查询(并进行查询(SQ01)SAP AG 2002, Title of Presentation, Speaker Name 64授人以鱼授人以鱼不如授人以渔不如授人以渔SAP AG 2002, Title of Presentation, Speaker Name 65演讲完毕,谢谢观看!